This release provides the following functional enhancements
described in this and the other IBM PL/I books.
Performance improvements
- UVALID will now be inlined for for strings of length 256 or less.
- Under ARCH(7) and higher, the CU12, CU14, CU21, CU24, CU41, and CU42
instructions will be used to provide for fast conversions
between UTF-8, UFT-16 and UTF-32.
- Under ARCH(7) and higher, the TRTT, TROT, TRTO, and TROO
instructions will be used to provide for fast translations
between one- and two-byte buffers.
- Assignments of like arrays of scalars will now be handled as storage copy operations.
- All assignments of BIT VARYING to BIT VARYING will now be inlined.
- All assignments of byte-aligned BIT NONVARYING to BIT VARYING will now be inlined.
- The ROUND and ROUNDDEC built-in functions will be
inlined when the argument to be rounded is DFP.
- To simplify the choosing of options for best performance,
- the COMPACT option has been dropped
- The default setting for DEFAULT(REORDER | ORDER) has been changed to DEFAULT(REORDER)
- the TUNE option has been dropped
- Detection of the dereferencing of null pointers exploits
the new compare-and-trap instruction under ARCH(8).
- The compiler has been built with ARCH(6) to improve its performance.
Usability enhancements
- The CICS preprocessor now supports block-scoping and consequently
will add the needed local CICS declares to all non-nested procedures.
- The SQL preprocessor now supports the PL/I rules for the scope of declarations when
resolving host variable references through the new SCOPE option. NOSCOPE is the
default for compatibility with previous releases.
- The MACRO preprocessor will now leave %include, %xinclude, %inscan,
and %xinscan statements in the compiler listing as comments.
- The MACRO preprocessor now provides via the %DO SKIP; statement
an easy and clear way to omit sections of code from a compile.
- The MACRO preprocessor now supports an option called NAMEPREFIX
which allows the user to force macro procedures and variables to start with a specified character.
- The IGNORE compiler option provides the ability to suppress PUT FILE and/or
DISPLAY statements (either of which may have been used for debug purposes
but which should be compiled out of the production version).
- The NULLSTRPTR suboption of the DEFAULT compiler option provides
user control of whether sysnull or null is assigned to a pointer
when the source in the assignment is a null string.
- The new MAXGEN option specifies the maximum number of intermediate language
statements that should be generated for any one user statement and will
cause the compiler to flag any statement where this maximum is exceeded.
- The new ONSNAP option will allow the user to request the compiler to insert
an ON STRINGRANGE SNAP; or an ON STRINGSIZE SNAP; statement into the
prologue of a MAIN or FROMALIEN proc.
- The new SHORT suboption of the INITAUTO option will
limit the INITAUTO option so that it does not duplicate all of the runtime STORAGE
option, but does initialize variables that might be optimized to registers.
- The new RTCHECK option will generate code to test for the dereferencing of null pointers.
- The compiler will now flag various statements that may be risky:
- code where the result of a FIXED operation has a scale factor less than zero
- ENTRYs used as functions but declared without the RETURNS attribute
- parameters declared as BYVALUE when doing so is ill-advised, e.g. declaring a FIXED DEC parameter BYVALUE
- FIXED DECIMAL add and multiply operations that might raise FIXEDOVERFLOW
- The RULES option has been expanded to allow more control over and flagging of poor code:
- NOPROCENDONLY will flag END statements for PROCs that don't name the PROC they are closing
- NOSTOP will flag the use of STOP and EXIT
- NOLAXQUAL(STRICT) will flag variables not qualified with their level-1 name
- NOLAXSCALE will flag declares of FIXED DEC(p,q) and FIXED BIN(p,q) where q < 0 or p < q
- NOGOTO(LOOSE) will allow GOTOs only if in the same block
- More than one DELAY STATEMENTS can be concurrently executed in different procedures.
Serviceability enhancements
- When the compiler cannot open a file, the compiler will now, if possible, also
include the related C runtime message in the message in the listing.
- If user code requires a DFP conversion at compile time but the compile is
running on a machine without DFP hardware, this error will be trapped and
a meaningful error issued.
- If the SQL preprocessor is invoked more than once without INCONLY as its
suboption, then the DBRM library created by the compiler will be empty, and
now an E-level message will be issued to warn the user about this problem.
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)