create new tag
view all tags

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:

  • Menu children are typically (and by default) defined as DETACHED invocations.

  • Job-step children are typically (and by default) defined as RELATED invocations.
  • Parent-Child invocations between two (for example INPUT) processes are typically (and by default) defined as SUBPROCESS invocations.
  • Direct ILF verb invocations (ex: ILF verb 'INPUT') are by default defined as DETACHED invocations.
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.


Read what other users have said about this page or add your own comments.

Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r2 - 2016-02-19 - JeanNeron
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback