Four findings from review.
- mpAbort's comment still said the runtime puts SYSCC on an aborted envelope,
which is what I believed before checking: a JS program stops before the
envelope is finalised, so an abort carries neither SYSCC nor SYSENCODING. The
comment now says that, and says that the SAS estate's wrapper is what adds
SYSCC to an abort - the difference the abort scenarios declare.
- runService removes the previous run's session directory when it creates the
next one: a directory is only read back through estate.weboutPath, which has
moved by then, and a test file that runs many services was leaving one behind
per call.
- brCheckPath: both callers are macro-bound (a DIRLIST parent and a WRITECHECK
target that is written into a filename statement), so rejecting % and & at
every call is right; the comment says so now instead of leaving a reader to
check.
- getdata's abort message is the recorded text - 'dataset X.Y does not
exist!!' with MAC mpestp_getdata.sas, from the estate's own response - so the
mock keeps it rather than inventing a diagnosis. The control-library mismatch
that could put a misleading name in that sentence is the hardcoded DC_JSLIB,
and #494 removes it.