Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, Migration Guide

PLICALLB Considerations

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:

Table 8. Differences in PLICALLB Argument List Support
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:

  1. Options defined at installation time that have the non-overrideable attribute
  2. Options specified via the PLICALLB entry point
  3. Options specified in the PLIXOPT string or in CEEUOPT
  4. Option defaults defined at installation time

The user arguments passed to the PL/I main routine have the following precedence (from highest to lowest):

  1. Output from CXIT_PARM or AUE_PARM of the assembler user exit
  2. User arguments passed in via the PLICALLB entry
Note:
The input to CXIT_PARM or AUE_PARM of the assembler user exit is the first argument in the PLICALLB parameter list, that is, the address of a vector of user argument addresses.

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:

  1. User-supplied heap storage is above the 16M line
  2. The ANYWHERE suboption of the HEAP option is in effect
  3. The main program is in AMODE(24)

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:


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)