cvec ← ##.exit code ⍝ Return to calling environment. Some "closed workspaces" like to call ⎕OFF when their task is complete. This can can be irritating during testing or if the workspace was executed as part of a continuing interactive session. [exit] infers if this is the case by determining whether there is a six-space input prompt in the session log following the init- ial Dyalog APL banner. The result is the character vector format of [exit]'s argument, preceded by the vector '⎕OFF ' only if it decides there is no session to which to return. [code] is typically a small integer "exit code" with 0 meaning success. [exit] _returns_ a character vector, rather than _executing_ it, to reduce the probability of accidental termination of APL during testing. So, with a closed workspace, instead of: ⎕LX←'main ⋄ ⎕OFF 0' we might prefer: ⎕LX←'main ⋄ ⍎ exit 0' With the latter coding, the ⎕LX expression will exit to the session, rather than terminating the process, if there has been any prior session interaction. Bugs: [exit] will incorrectly assume a non-interactive session to be interactive if: 1. The session output contains a line with six or more explicit leading blanks. 2. The session output has been sufficiently voluminous to cause the log to over- flow, losing the line with the "Dyalog APL" banner. In both of these cases, [exit] fails safe by omitting the '⎕OFF' vector from its result and thus prescribing a return to the session (rather than termination of the APL process). Examples: ' 0' ≡ exit 0 ⍝ in an interactive session. '⎕OFF 0' ≡ exit 0 ⍝ in a runtime application. See also: refws Back to: contents Back to: Workspaces