(init_sub_dp) — initialize for subroutine (multiple environment)

The invocation of this routine:
  • Creates and initializes a new Language Environment process and enclave to allow the execution of subroutines multiple times
  • Sets the environment dormant so that exceptions are percolated out of it
  • Returns a token identifying the environment to the caller
  • Returns a code in register 15 indicating whether an environment was successfully initialized
  • Ensures that the environment tolerates the existence of multiple Language Environment enclaves
  • Ensures that when the environment is dormant, it is immune to other Language Environment enclaves that are created or terminated

Multiple environments can be established only by using (init_sub_dp) as opposed to (init_sub), which can establish only a single environment.

Read syntax diagramSkip visual syntax diagram
Syntax

>>-CALL--CEEPIPI--(--init_sub_dp--,--ceexptbl_addr--,----------->

>--service_rtns--,--runtime_opts--,--token--)------------------><

init_sub_dp (input)
A fullword function code (integer value = 9) containing the init_sub_dp request.
ceexptbl_addr (input)
A fullword containing the address of the PreInit table to be used during initialization of the new environment. Language Environment does not alter the user-supplied copy of the table. If an entry address is zero and the entry name is non-blank, Language Environment searches for the routine (in the LPA, saved segment, or nucleus) and dynamically loads it. Language Environment then places the entry address in the corresponding slot of a Language Environment-maintained table.

Language Environment uses the high-order bit of the entry address to determine what AMODE to use when calling the routine. If the entry address is zero, and the entry name is supplied, Language Environment uses the AMODE returned by the system loader. If the entry address is supplied, you must provide the AMODE in the high-order bit of the address.

service_rtns (input)
A fullword containing the address of the service routine vector. It contains 0 if there is no service routine vector. See Service routines for more information.
runtime_opts (input)
A fixed-length 255-character string containing runtime options (see z/OS Language Environment Programming Referencefor a list of runtime options that you can specify).
Note:
  1. The runtime options you specify will apply to all of the subroutines that are called by the (call_sub) function. This includes options, such as POSIX. Therefore, all of your subroutines must have the same characteristics and requirements needed for these runtime options.
  2. If you want to run XPLINK routines in a PreInit sub environment, you must specify the XPLINK(ON) runtime option field when you create the sub environment by calling CEEPIPI(init_sub). You can not run XPLINK routines in a sub environment when runtime option XPLINK(OFF) is in effect.
token (output)
A fullword containing a unique value used to represent the environment. The token should be used only as input to additional calls to CEEPIPI, and should not be altered or used in any other manner.