Scoping Rules - Subprocess/Related/Detached
'Scoping' refers to what workfields and temporary files (both disk and memory) are available to a given process.
There are three levels of Scoping: SUBPROCESS, RELATED, and DETACHED. Every workfield and temporary (disk or memory) file is defined at one of these three levels of scoping.
The same three scoping levels define every 'child' invocation. For example:
DETACHED workfields/tempfiles survive DETACHED process invocations. RELATED and SUBPROCESS level files/fields don't. DETACHED workfields/tempfiles initialize on the next invocation of a DETACHED proces.
DETACHED and RELATED workfields/tempfiles survive RELATED invocations. SUBPROCESS level files/fields don't.
DETACHED, RELATED, and SUBPROCESS workfields/tempfiles all survive SUBPROCESS level invocations.
For example, if a DETACHED workfield or tempfile is referred to by a DETACHED child invocation, parent and child share that workfield/tempfile.
But if a RELATED or SUBPROCESS workfield/tempfile is referred to by a DETACHED child, the child creates a new copy of that workfield/tempfile.
Record buffers, field contents (including Working Storage fields), and file pointers are all available transparently through a SUBPROCESS invocation. They are not maintained for RELATED or DETACHED process invocations.
Exception #1:
Query(Setup) inherits inbound workfields/tempfiles according to normal scoping rules. But it passes workfields/tempfiles
only to Query(Runtime) execution.
Query(Runtime) inherits inbound workfields/tempfiles
only from its associated Query(Setup). It can pass
nothing to any subsequent JOB step. The exception to this is that
--- PROCESS CODE can be used to pass limited information into and out of Query processes. But
--- PROCESS CODE should only be used for SPEED II compatibility issues. See ECR #2805 for further explanation.
Exception #2:
No workfield or tempfile information can 'come back' from a JOB step whose 'Sep Tsk?' (Separate Task) flag is set to 'Y'. This is because a JOB step process that could be spawned into an independent thread has no facility for communicating back to the original parent process, save by means of a disk/permanent file. See
APPX Background Processing for further discussion.
Comments:
Read what other users have said about this page or add your own comments.