PL/I Runtime Environments
There are currently two supported PL/I run-time environments:
- PL/I for OS/390 & VM (and earlier) = "old PL/I"
- Visual Age PL/I, Enterprise PL/I = "new PL/I"
These environments use different modules at run-time. Assembler code that makes
use of undocumented interfaces which works in the "old PL/I" environment may not
function as expected in the "new PL/I" environment. The "new PL/I" run-time environment is a complete rewrite and there appear to be some associated growing pains.
At time of writing, I/O performance for "new PL/I" is noticeably more expensive
in terms of CPU time for some types of dataset.
The "new PL/I" run-time preserves the attributes of an existing dataset over
those specified in the program. In the case of a dataset opened for output, this
can result in a change of behaviour from the "old PL/I" environment. Conflicting
attributes will be detected when records are written to the output dataset, not
at open time.
Some jobs encountered an SEC6 abend in the "new PL/I" environment instead of
an S322 for CPU time exceeded even when these jobs did not use Unix System Services services.
APAR PQ84350 appears to solve this problem. Other side effects are possible.
Amode 24 Considerations
PL/I routines that must execute in Amode 24 with "new PL/I" must be
- compiled with the NORENT option
- linkedited with CEE.SIBMAM24 concatenated in front of CEE.SCEELKED
- run with run-time options ALL31(OFF), HEAP(,,BELOW,,,) and STACK=(,,BELOW)
Support for AMODE 24 applications is only available via APAR PQ62003 from level 2 support.
Environment Initialization
The presence of module CEESG010 indicates that the old PL/I run-time environment
is required. If the main routine is recompiled with "new PL/I", then you need to
make sure that CEESG010 is included at link-edit time if routines compiled with
"old PL/I" will be CALLed or FETCHed. The corresponding module for "new PL/I" is
CEESG011.
Regional(1) Support
The maximum size of a REGIONAL(1) dataset has been decreased to 2G bytes.
You need to specify the RECCOUNT parameter via the TITLE statement on OPEN or
environment variable in Unix System Services if you wish to create more than 50 blocks.
For issues related to the compiler itself, see
Visual Age & Enterprise PL/I.