This release provides the following functional enhancements.
Enterprise PL/I for z/OS, V4.3 delivers the following features to improve performance:
- The new ARCH(10) compiler option produces code that utilizes instructions that are available on the IBM zEnterprise EC12 models.
- Specifically, these ARCH(10) machines add new instructions supported by the execution-hint, load-and-trap, and miscellaneous-instructions-extensions facilities, which can be exploited by the compiler.
- The compiler uses some of these new instructions to improve the performance of some data type conversions from PICTURE to FIXED BIN and from PICTURE to FLOAT.
- Inlined code (rather than calls to library routines) is used for:
- VERIFY and SEARCH when there are three arguments and the second is a single character
- Additional conversions from PICTURE to DFP
- Additional conversions of BIT to CHAR
- Additional conversions of BIT to WIDECHAR
- The code generated for TRIM of FIXED DEC is improved.
- The code generated to get and set nonnative string lengths can execute faster.
Enhanced middleware support
- The SQL preprocessor includes the following improvements:
- The ONEPASS SQL option is supported.
- Host variable declarations can use some restricted expressions.
- The display in the listing of the EXEC SQL statement is changed to be readable and similar to the original source.
- Declares using LIKE are supported.
- Missing and extraneous END statements are flagged to make it easier to track syntax errors that cause problems in resolving host variable references.
- A new DEPRECATE preprocessor option allows the user to deprecate the use of the EXPLAIN, GRANT, REVOKE, and SET CURRENT SQLID EXEC SQL statements.
- EXEC SQL DECLARE statements are allowed at the PACKAGE level of a program.
Productivity enhancements requested by compiler users
- The new built-in functions UTF8, UTF8TOCHAR, and UTF8TOWCHAR
- Provide the ability to convert between CHAR and UTF-8 with sensitivity to the CODEPAGE option.
- Simplify conversions between UTF-8 and UTF-16.
- Allow the user to create UTF-8 literals and to initialize static variables with UTF-8 data.
- The new MSGSUMMARY compiler option lets the user request that the listing include a brief summary of what messages were produced in a compilation and, optionally, where those messages appeared.
- The new CASERULES compiler option allows the user to specify casing rules for PL/I keywords (for example, that all keywords must be in uppercase).
- The DEPRECATE compiler option has a new STMT suboption that allows a wide range of statements to be deprecated.
- The new DEPRECATENEXT compiler option allows for staged deprecation of any items in the DEPRECATE option.
- The new ALLCOMPARE built-in function supports comparing structures.
- The new ASSERT statement helps make it easier to verify the correctness of a program.
- The RTCHECK compiler option is expanded to allow checking for dereferencing of pointers equal to the old NULL() value (namely, pointers with the hexadecimal value of 'FF000000').
- The maximum length of WIDECHAR strings is increased to 32767 so that it matches the limit for CHAR and BIT.
- The RULES compiler option is enhanced so that you can optionally flag the use of:
- CONTROLLED variables by using its NOCONTROLLED suboption
- RECURSIVE procedures by using its NORECURSIVE suboption
- Nested procedures occurring in between executable code by using its NOLAXNESTED suboption
- Assignments of the form x = y = z as part of its NOLAXIF suboption
- RULES(NOLAXSCALE) issues a separate message for ROUND(x,p) when p is negative. This allows you to use the EXIT option to suppress this message while keeping the other messages issued under RULES(LAXSCALE).
- The SUPPRESS attribute is now permitted on PROCEDURE statements so you can direct the compiler not to flag selected procedures as unreferenced or in violation of RULES(NOLAXNESTED).
- The support for handles now allows:
- Comparing handles with the same associated type
- Adding to and subtracting from handles but with sensitivity to the associated structure type
- Computing the difference of two handles but with sensitivity to the associated structure type