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

Understanding when working code must be changed

Incorrect code
Relying on the order of declarations
Using invalid FIXED DECIMAL data
Using invalid SUBSTR references
Using dissimilar EXTERNAL declares
Using an incorrect PLITABS declare
Initializing variables
Initializing AUTOMATIC
Initializing BASED
Initializing CONTROLLED
Initializing STATIC
Retaining unused declarations
Retaining unused INTERNAL STATIC
Incorrect code that will now raise exceptions
FIXEDOVERFLOW when SIZE is disabled
Invalid allocations
UNDEFINEDFILE with PRINT files
Incorrect code that will now loop endlessly
Even precision PICTURE loop control variables
Assignments that will produce different results
Source-target overlap
Float-to-float assignments
Other statements that will produce different results
STREAM I/O with unprintable characters
Uninitialized EXTERNAL STATIC
Incompletely declared FILEs
Dummy arguments and alignment
Dummy arguments and CONTROLLED
Pointer arithmetic
Code that will not perform as well
FIXED DEC as a loop control
FIXED BIN(15) as a loop control
I/O using TOTAL

This chapter documents situations where the new compiler generates different code than the old compilers. The problems discussed in this chapter have been important to customers who have already migrated to Enterprise PL/I, and you should read this chapter closely to see if they might affect you.

Some of the problematic code discussed in the sections that follow is flagged by the compiler, and you should examine (and change as appropriate) the code associated with the messages issued. In particular, you should examine any compilations producing the following messages:

Note also that using the options DECIMAL(NOFOFLONASGN) DFT(OVERLAP) and STATIC(FULL) may eliminate some of these problems.


Terms of use | Feedback

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