IBM PL/I compiler has released a new version on IBM Z. The recent announcement of Enterprise PL/I V5.2 reinforces the continuing IBM commitment to the PL/I programming language on the z/OS operation systems and the continued delivery of new features.
Specifically, V5.2 offers:
Exploitation of the new IBM z14 hardware and the Vector Packed Decimal Facility
- Enterprise PL/I for z/OS, V5.2 reduces CPU usage of decimal compute intensive applications by up to 40%, and on average by 10% over the same applications built with Enterprise PL/I for z/OS V5.1 on IBM z14. This significant reduction in CPU usage is achieved through improvements in optimization and compiler exploitation of the new Vector Packed Decimal Facility.
- The new ARCH(12) compiler option allows the compiler to exploit the latest IBM z14. Specifying ARCH(12) instructs the compiler to include exploitation of the new Vector Packed Decimal Facility, which allows the PL/I data types, packed and zoned decimal, to be handled in wide 16-byte vector registers instead of in memory. In particular, this leads to improved performance for some PICTURE and FIXED DECIMAL calculations. No source changes are required to exploit the new Vector Packed Decimal Facility – just recompile your applications with ARCH(12) to target z14.
Several performance enhancements, particularly to INLIST and SELECT
- The code for INLIST is improved when the first argument is CHAR(n) with 1 <= n <= 4 and all the other arguments are CHAR with length <= n.
- The code for SELECT(x) has been significantly improved when x is CHAR, and when appropriate the generated code will perform the SELECT via a binary search.
- The compiler now:
- Flags code where the program logic could lead to the END statement even though the containing PROC was a function that should return a value.
- Flags SELECT statements where an expression in a WHEN clauses matches a previous expression in one of the WHEN clauses in its containing SELECT statement.
- Flags more code where INIT could be replaced by VALUE.
- Flags a function that returns the address of an AUTOMATIC variable (because that address will be unreliable when used by the invoker of the function).
- Supports inlining of nested functions.
- Issues a message to explain when a function is not inlined.
- Flags any declare of a variable named PLIXOPT that does not have the correct attributes for it to define run-time options.
- Flags logical AND and logical OR operations whose operands are identical.
- Flags code where the VALUE type function is applied to a structure type that is only partially initialized.
More messages to help improve code quality
Enterprise PL/I for z/OS, V5.2 introduces a number of new compiler messages to flag violations so that help you to optimize your code.
Specifically, these new compiler messages including but not limited to:
- Compiler Informational Messages: IBM2831I I, IBM3000I I, IBM3019I I - IBM3021I I, IBM3024I I
- Compiler Error Messages: IBM2465I E - IBM2475I E
- Compiler Severe Messages: IBM2300I S - IBM2310I S
Compilation of programs with SQL statements under z/OS UNIX System Services
- The new DBRMLIB option specifies where the SQL preprocessor should write its DBRM dataset when running under z/OS UNIX System Services.
- The compiler now supports the compilation of programs with SQL statements under z/OS UNIX System Services.
Over five additional client-requested enhancements
Enterprise PL/I for z/OS, V5.2 delivers more than five client-requested enhancements, including but not limited to:
- Microseconds for improved accuracy in REPATTERN
- Improved diagnosis of missing returns from functions
- Support for inlining of nested functions
- Message to explain when a function is not inlined
- Flagging of incorrect PLIXOPT declares
With Enterprise PL/I for z/OS, V5.2, you can benefit from over 50 years of IBM experience in PL/I compiler innovation and development.