The last of the three main properties the programmer can specify for a process is dependency. To understand the concept of dependency, the programmer must first be familiar with the following related concepts.
-
Critical objects
Every process makes use of certain objects originally declared by another process. These include the task variable, the procedure the process is executing, and any objects passed as actual parameters to the process. In this guide, these objects are referred to as the critical objects of the process.
-
Parents
When a process is initiated, it receives these critical objects from a process called the parent. In most cases, the initiator of a process is also the parent of that process. The exact method for determining which process is the parent of a particular process is given under “Critical Blocks” later in this section.
Dependency is the relationship between a process and its parent that determines how these critical objects are stored. For an independent process, the system creates copies of these critical objects when the process is initiated. For a dependent process, the system creates references to the objects stored by the parent.
The programmer can specify the dependency of a process by choosing an appropriate process initiation statement. The dependency of a process remains the same throughout execution; if it is initiated as dependent, it cannot later become independent, or vice versa.
To initiate an independent process, you can use an ALGOL or COBOL RUN statement or a ??RUN (Run Code File) system command. Also, a WFL job submitted through a START statement is executed as an independent process.
To initiate a dependent process, you can use a CALL or PROCESS statement in ALGOL or COBOL, or a RUN statement in Command and Edit (CANDE), Menu-Assisted Resource Control (MARC), or WFL.
Many implications result from the choice to initiate a process as dependent or independent. However, the most crucial difference is that an independent process can continue to exist after its parent has terminated. A dependent process must terminate before its parent does.
The second most crucial difference between dependent and independent processes is that a dependent process and its parent can communicate through shared objects, whereas an independent process and its parent cannot.

