This release provides the following functional enhancements.
The compiler utilizes the z196 high-word facility.
- The compiler utilizes the z196 floating-point extension facility.
- The compiler utilizes the z196 population-count facility.
- The new UNROLL compiler option gives the user control of loop unrolling.
- The compiler generates inline code to resolve the ULENGTH and USUBSTR built-in functions for UTF-8 strings.
- The compiler generates inline code for MEMINDEX (p, n, x) where x is WCHAR(1) just as it previously did if x was CHAR(1).
- The compiler generates inline code for STG (x) where x is a BASED variable using REFER when all NONVARYING BIT in x are ALIGNED and all other elements in x are UNALIGNED.
The compiler supports typed structures in Debug Tool.
IMPROVED WEB INTEROPERABILITY
XML generation, via the XMLCHAR built-in function, supports XML attributes and the omission of null values.
ENHANCED MIDDLEWARE SUPPORT
- The SQL preprocessor includes the following improvements:
- Block scoping is supported.
- The SQL preprocessor load module is smaller than the earlier module.
- The SQL preprocessor runs faster.
- The SQL TYPE attribute can be used in a declare wherever any other PL/I data attribute is used.
- The SQL preprocessor handles PACKAGEs.
- In processing declares of host variables, the SQL preprocessor honors the following compiler options so that defaults are appropriately applied and unsuitable host variables are rejected as appropriate:
- Processing of the PRECISION attribute by the SQL preprocessor has been improved.
- The SQL preprocessor recognizes the UNSIGNED and COMPLEX attributes - and rejects their use in any host variable.
- The SQL preprocessor is implemented so that DSNHMLTR is declared in the outermost procedure containing code that needs it.
- The SQL preprocessor no longer puts an unprintable character in the source when emitting code to set the SQLAVDAID.
- The SQL preprocessor allows indicator arrays to have any lower bound.
- The SQL parameter list structure emitted by the preprocessor has fewer unions, fewer init clauses, and no additional declares based on elements of the structure.
- The new BY DIMACROSS form of assignments makes it easier to write code to handle the results of SQL multi-row fetch.
- The compiler and the preprocessors (rather than just the SQL preprocessor when parsing EXEC SQL code) now all support < >, as a not-equals symbol.
- The new INDICATORS built-in function makes it easy to declare an array to be used as a SQL indicator variable with a structure.
INCREASED PRODUCTIVITY AND USER REQUIREMENTS
- A new compiler option conditionally erases the listing generated from a preprocessor phase unless the phase produced some messages.
- The compiler will apply the NONASSIGNABLE attribute to any parameter declared with the INONLY attribute, and there the compiler will flag any assignment to a parameter declared as INONLY.
- The compiler supports a new STRICT/LOOSE suboption to RULES(NOLAXENTRY) so that under the LOOSE suboption OPTIONS(ASM) routines are not flagged when they do not specify a parameter list.
- Also, under RULES(NOLAXENTRY), the compiler will not flag names starting with DSN, and under RULES(NOUNREF), the compiler will not flag names starting with DSN or SQL.
- Under the new NOSELFASSIGN suboption of the RULES compiler option, the compiler flags assignments of variables to themselves.
- Under the new NOLAXRETURN suboption of the RULES compiler option, the compiler generates code to raise an ERROR when a RETURN with an expression is executed from a procedure coded without RETURN or vice versa.
- The compiler issues an improved message when a comma is missing in a structure declare.
- The compiler issues new and improved messages when source contains invalid shift-in and shift-out bytes.
- The compiler explicitly supports some use of adjustable BASED with-out REFER.
- The compiler supports comparisons of POINTER to '' and ''b.
- The compiler has raised the maximum number of distinct include files allowed in a single compilation from 2047 to 4095.