New PL/I Compilers

The newer versions of the PL/I compiler for OS/390 and z/OS provide additional functions including: However, the new compilers are much more resource-intensive in terms of The new compilers also adhere much more closely to the documentation. This can result in incompatible results. Since these "features" were not documented, these differences are not covered in the Migration Guide. For example, the older compilers support the use of variable-length source and fixed-length include members, even though this is not reflected in the product documentation.

The compiler also detects some incorrect coding that the previous compilers tolerated or ignored. For example, previous versions of the compiler

The new compiler flags these error conditions; source changes are required.

The product is packaged as a small number of large PROGRAM elements for SMP/E purposes. This means that rather than individual CSECTs being updated by maintenance, the whole load module is replaced. In spite of this, the compiler support people appear to be able to address problems in a timely fashion.

Selected Migration Issues

The compiler has been enhanced to add support for single-byte binary values, which means that FIXED BIN fields with precision less than or equal to 7 will now become one byte in length instead of two bytes.

Some hardware conditions that could previously be bypassed using condition prefixes can no longer be disabled, for example ZERODIVIDE. This is not mentioned in the Migration Guide since the documentation for previous releases describes this situation as a programming error.

On older hardware without additional floating point registers, the compiler default of FLOAT(AFP) may result in more CPU-intensive code since this feature will be emulated in software by trapping the failed instructions.

The new compiler no longer supports output to a PDS or PDS/E dataset. Some existing procedures may need to be updated.

Compile-time options added by APAR are not shown in the OPTIONS list until the next release of the product. For example, on release 3.2, you can specify NOBLKOFF so that offsets in the object listing are from the base of the module. However, this option does not appear in the OPTIONS listing at that version of the compiler so it is difficult to detect the current setting or determine the existence of this option.

Links


Big Iron