Language Environment provides support for PL/I applications that use the PLICALLB entry point. The following table shows the PLICALLB parameter mapping between OS PL/I and Language Environment:
| OS PL/I | Language Environment |
|---|---|
| Address of the length of ISA storage for a nonmultitasking program or the major task in a multitasking program | Mapped to STACK(init_size) |
| Address of ISA storage | Used as the initial STACK segment |
| Address of the length of ISA storage for each subtask | Mapped to NONIPTSTACK(init_size) |
| Address of the maximum number of concurrent subtasks | Mapped to PLITASKCOUNT(max_thread) |
| Address of the options word,
in which the following run-time options can be specified:
REPORT SPIE|STAE COUNT FLOW HEAP suboptions TASKHEAP suboptions |
Supported as follows:
REPORT mapped to RPTSTG SPIE|STAE mapped to TRAP COUNT ignored FLOW ignored HEAP(,,KEEP|FREE)|(,,ANY|BELOW) THREADHEAP(,,KEEP|FREE)|(,,ANY|BELOW) |
| Address of HEAP storage length for a nonmultitasking program or the major task in a multitasking program | Mapped to HEAP(init_size) |
| Address of HEAP storage | Used as the initial HEAP segment |
| Address of HEAP increment for a nonmultitasking program or the major task in a multitasking program | Mapped to HEAP(,incr_size) |
| Address of HEAP for subtasks | Mapped to THREADHEAP(,increment) |
| Address of ISA increment for a nonmultitasking program or the major task in a multitasking program | Mapped to STACK(,incr_size) |
| Address of ISA increment for each subtask (optional for a nontasking application) | Mapped to NONIPTSTACK(,incr_size) |
When the above argument list is passed in via the PLICALLB entry point, the argument in the list must either point to an address or be zero. The high-order bit ON in an argument indicates the end of the argument list. R1 must contain the address of the argument list.
With Language Environment, the run-time options passed via the PLICALLB entry point are processed as options specified on invocation of the application and have a higher precedence than CEEUOPT or PLIXOPT options. The assembler user exit cannot be used to alter the run-time options passed through the PLICALLB invocation.
To summarize, the run-time options passed in have the following precedence (from highest to lowest) among Language Environment option specification methods:
The user arguments passed to the PL/I main routine have the following precedence (from highest to lowest):
Language Environment encourages the use of above-16M-line storage. For compatibility with OS PL/I, Language Environment maps the user-supplied ISA and HEAP storage to STACK and HEAP. With this mapping, however, Language Environment still needs to issue some GETMAINs. Since user-supplied ISA/HEAP storage is usually below the 16M line, below-16M-line storage can be quickly consumed under Language Environment. How Language Environment manages storage is described in the z/OS Language Environment Programming Guide.
Language Environment manages storage differently than OS PL/I. It divides storage into more categories than the OS PL/I supported ISA and HEAP. As a result, mapping the user-supplied OS PL/I ISA or HEAP storage to Language Environment STACK or HEAP storage still requires GETMAINs during run time. Further, Language Environment provides diagnostics to ensure the user-supplied length of ISA or HEAP storage is a multiple of 8 bytes and the address is on a double-word boundary.
Language Environment also ensures that the location of the user-supplied ISA or HEAP storage matches the location specification in the STACK or HEAP run-time option. The user-supplied HEAP storage is ignored when all ofthe following are true:
Language Environment allocates below-16M-line storage using the init_sz24 and incr_sz24 suboptions specified in the HEAP option.
Language Environment support of PLICALLB is not available in the following environments: