Enhancements in this release
This release provides the following functional enhancements that are described in this and the other IBM® PL/I books.
Usability enhancements
- The compiler flags any occurrence of
=+
and=-
as likely typos. - The compiler supports a maximum number of 65535 lines in a page in the listing. See LINECOUNT.
- The compiler has increased the maximum length of the string passed to the EXIT to 1023. See EXIT.
- The compiler issues a warning message when the parameter to MAIN is declared as CHAR VARYING with a specific length (rather than with an indeterminate length specified as CHAR(*) VAR).
- The compiler supports the use of assigning the null string (specified
as either
''
or''b
) to HANDLE, OFFSET, ENTRY, and AREA variables. - The compiler supports control of the NULLINIT values used for POINTERs.
Compiler option enhancements
New compiler
options:
- The MAXINIT compiler option helps you find code that significantly increases the size of the generated object.
- The MACRO preprocessor supports the same ID option as the INCLUDE preprocessor.
- The MACRO preprocessor IGNORE option specifies whether the MACRO preprocessor should ignore specific statements.
- The SQL preprocessor LINEFILE option lets you include a file number as well as a line number in the DBRM statement number.
Modified compiler options:
- The DEFAULT compiler option has these new suboptions:
- NULLINIT( SYSNULL | NULL )
- The NULLINIT suboption of the DEFAULT compiler option helps determine the value assigned to a POINTER that has the NULLINIT attribute.
- LAXQUAL | NOLAXQUAL
-
The DEFAULT(NOLAXQUAL) options specifies that when the compiler is resolving a reference to a name without any dot qualification, then if the name is ambiguous in the block where it is first declared, but is a reference to a scalar in a parent block, then the compiler will resolve the reference to be that parent block reference.
- The NOLAXINOUT suboption of the DEFAULT compiler option supports two sets of suboptions.
- The ARCH compiler option supports ARCH(13) to generate code that uses instructions available on the 8561-xxx (IBM z15™) models in z/Architecture® mode.
- The FOFLONDIV and NOFOFLONDIV suboptions of the DECIMAL compiler option require the compiler to generate code that will raise the FIXEDOVERFLOW condition or produce a truncated result for any use of the DIVIDE built-in function.
- The PADDING and NOPADDING suboptions of the DEFAULT compiler option specify if the compiler should pad defined structures.
- The USAGE compiler option has this
new suboption:
- REGEX( RESET | NORESET )
- The REGEX suboption of the USAGE compiler option lets you choose better performance for repeated REGEX calls when you know what other functions in your applications are dependent on the C locale.
- The RULES compiler option has these
new suboptions:
- COMPLEX | NOCOMPLEX
- The NOCOMPLEX suboption of the RULES compiler option lets you enforce the requirement that any use of the COMPLEX attribute, built-in function or constants should be flagged.
- GLOBAL | NOGLOBAL
- The NOGLOBAL suboption of the RULES compiler option lets you flag any variable that is used in a nested subprocedure of the block where the variable is declared as AUTOMATIC, CONTROLLED, DEFINED, PARAMETER, and ASSIGNABLE STATIC.
- LAXEXPORTS | NOLAXEXPORTS
- The NOLAXEXPORTS suboption of the RULES compiler option lets you enforce the requirement that every PACKAGE explicitly name all the routines it exports.
- LAXFIELDS | NOLAXFIELDS
- The NOLAXFIELDS suboption of the RULES compiler option lets you enforce the requirement that fields have to be explicitly specified within a SQL SELECT or INSERT.
- LAXOPTIONAL | NOLAXOPTIONAL
- The suboption NOLAXOPTIONAL of the RULES compiler option causes the compiler to flag any use of the OMITTED and PRESENT built-in functions whose parameters are not declared as OPTIONAL.
- LAXPACKAGE | NOLAXPACKAGE
- The NOLAXPACKAGE suboption of the RULES compiler option lets you enforce the requirement that all compilation units contain an explicit PACKAGE statement.
- LAXPARMS | NOLAXPARMS
- The NOLAXPARMS suboption of the RULES compiler option lets you enforce the requirement that one of the INOUT/INONLY/OUTONLY attributes be specified for all parameters.
- LAXSCALE | NOLAXSCALE
- The NOLAXSCALE suboption of the RULES compiler option lets you disallow FIXED BIN with any nonzero scale factor and limit its flagging to only the primary source file.
- UNREFSTATIC | NOUNREFSTATIC
- The suboption NOUNREFSTATIC of the RULES compiler option will no longer flag PLIXOPT or PLITABS.
- PADDING | NOPADDING
- The LOOSE/STRICT suboption of the RULES(NOPADDING) compiler option lets you also find structures with leading and trailing padding.
- References which name start with 'DFH', 'DSN', 'EYU', 'SQL', and 'IBM’ are excluded from the RULES(NOLAXENTRY) and RULES(NOLAXQUAL) checking.
- The JSON compiler option
has the following changes:
- CASE( LOWER )
- The LOWER suboption of the JSON(CASE) compiler option specifies that the names in the JSON text generated by the JSONPUT built-in functions and expected by the JSONGET built-in functions will all be in lowercase.
- GET( HEEDCASE | IGNORECASE )
- The HEEDCASE suboption of the JSON(GET) compiler option specifies that the JSONGET built-in functions require exactly matching names. The IGNORECASE suboption of the JSON(GET) compiler option specifies that the JSONGET built-in functions view names as matching if their case is ignored.
- The 64K suboption of the LIMITS(STRING) option lets you set the corresponding limits for strings to 65535. See LIMITS.
- The abbreviations CSTG and STG are accepted as synonyms for CURRENTSIZE and SIZE in the USAGE(HEX) compiler option. See USAGE.
- The MACRO preprocessor CASE option has the CASE(ASIS) option as the default.
SQL enhancements
- The SQL preprocessor supports references using elements of DEFINE STRUCTURE statements. See Declaring host variables.
- The SQL preprocessor supports the ORDINAL attribute in the scalar host variables. See Declaring scalar host variables.
CICS enhancements
- The CICS preprocessor output now includes a listing of all the CICS options in effect when the preprocessor is run.