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

CICS enhancements

  • The CICS preprocessor output now includes a listing of all the CICS options in effect when the preprocessor is run.