What is new in Enterprise COBOL for z/OS 6.3 and COBOL 6.3 with PTFs installed
This section lists new and improved features in Enterprise COBOL for z/OS® 6.3 and Enterprise COBOL for z/OS 6.3 with PTFs installed.
Enterprise COBOL for z/OS supports the continuous delivery (CD) model so that you can receive new features and enhanced capabilities as soon as the code is ready without waiting for the next release. The below feature descriptions that begin with an APAR number are introduced in the PTFs that are shipped with Enterprise COBOL for z/OS V6.3. Install the latest PTFs using the FIXCAT feature of SMP/E to take advantage of these features. For more information on SMP/E FIXCATs, see Determining service required. For more information on PTFs and APARs for Enterprise COBOL for z/OS, see the COBOL for z/OS support page.
The enhancements that are described in this section also have an associated cross-reference to the COBOL publications for your convenience.
- AMODE
64 (64-bit) supportEnhanced language elements:
POINTERandPOINTER-32phrasesSYNCHRONIZEDclause- Intrinsic functions
LENGTH,ULENGTH,UPOS,USUPPLEMENTARY, andUVALID - Support for compiling programs that contain UTF-8 data items with
LP(64)(service) - Support for compiling programs that contain dynamic-length elementary items with
LP(64)(service) - DATA directive
- Dynamic call between AMODE 31 and AMODE 64 programs
- UTF-8
support
- New
USAGEclause of UTF-8
- New
- Support of 2002 and 2014 COBOL standards
New
DYNAMIC LENGTHclauseThe
REPOSITORYparagraphFUNCTIONspecifierINTRINSICNew date and time intrinsic functions (service)COMBINED-DATETIMEFORMATTED-CURRENT-DATEFORMATTED-DATEFORMATTED-DATETIMEFORMATTED-TIMEINTEGER-OF-FORMATTED-DATESECONDS-FROM-FORMATTED-TIMESECONDS-PAST-MIDNIGHTTEST-DATE-YYYYMMDDTEST-DAY-YYYYDDDTEST-FORMATTED-DATETIME
- JSON enhancements
Statement Description JSON GENERATENew phrases (service): NAME is OMITTEDCONVERTINGwhen-phrasegeneric-suppression-phrase
JSON PARSENew phrases (service): CONVERTING
- Other language element changes
POINTER-32phrase added toUSAGEclause- Restored capability of
CALL ... USING(service) - New
UUID4intrinsic function (service)
- Compiler option changes
New Changed Deprecated LPTUNE(service)INVDATA(service)CONDCOMP(service)LSACHECK(service)ARCHINITCHECK(service)NUMCHECK(service)TEST(service)RULES(service)SOURCE(service)OFFSET(service)ZONEDATA(service) - Runtime changes
- PERFORM … UNTIL EXIT support
- VSAM dynamic access optional logic path
- New runtime options
- Migration assistance
- New runtime option
IGZCOMPATforMERGEstatement - New option
QSAMBUFFINITCHARadded toIGZUOPTmodule
- New runtime option
- Listing changes
- Installation customization changes
- Compiler message changes
New Changed Removed IGYCB7315-W
IGYCB7316-W
IGYCB7317-W
IGYCB7318-W
IGYSI5305-U (service)
IGYSI5306-U (service)
IGYPS0212-S
- COBOL/JNI interface enhancement
AMODE 64 (64-bit) support
You can now develop AMODE 64 (64-bit) applications with Enterprise COBOL.
Consider the changes in development and compilation. (Compiling, binding, and running COBOL AMODE 64 applications)
The following language elements are enhanced to provide the AMODE 64 support:
- Using
POINTERandPOINTER-32phrases underLP(64) - When
LP(32)is in effect, theUSAGE POINTERandUSAGE POINTER-32data types are synonyms. However, they behave differently when LP(64) is in effect.- A
POINTERdata item can be SET to a value from aPOINTER-32data item. The high-order word of thePOINTERdata item is cleared to zero. (POINTER phrase) - A
POINTER-32data item can be SET to a value from aPOINTERdata item. Only the low-order word of thePOINTERdata item is used in this case. It is a programming error if the high-order word of the AMODE 64POINTERdata item is not zero. (POINTER-32 phrase)
- A
- Using
SYNCHRONIZEDclause underLP(64) - If the
SYNCHRONIZEDclause is specified for data items that have the following usages, the items will be aligned on a fullword boundary ifLP(32)is in effect, or on a doubleword boundary ifLP(64)is in effect. (SYNCHRONIZED clause)Note the following usages when you compile code underLP(64):USAGE FUNCTION-POINTER(FUNCTION-POINTER phrase)USAGE INDEX(INDEX phrase)USAGE OBJECT REFERENCE(OBJECT REFERENCE phrase)USAGE POINTER(POINTER phrase)USAGE POINTER-32(POINTER-32 phrase)USAGE PROCEDURE-POINTER(PROCEDURE-POINTER phrase)
- Using intrinsic functions under
LP(64) - When you compile with
LP(64), you must be aware that the returned value is an 18-digit integer. On the other hand, when you compile withLP(32), the returned value of the following intrinsic functions is a 9-digit integer.LENGTH(LENGTH)ULENGTH(ULENGTH)UPOS(UPOS)USUPPLEMENTARY(USUPPLEMENTARY)UVALID(UVALID)
- Compiling programs that contain UTF-8 data items with
LP(64) - PH18638: You can compile programs with the
LP(64)option when the program contains UTF-8 data items. - Compiling programs that contain dynamic-length elementary items with
LP(64) - PH18640: You can compile programs with the
LP(64)option when the program contains dynamic-length elementary items. (Dynamic-length items) - DATA directive
- PH40311: A new DATA directive is added and is supported when
LP(64)is in effect. (DATA) - Dynamic call between AMODE 31 and AMODE 64 programs
- Runtime APAR PH40348 (V2R3/V2R4): Dynamic call is supported in a mixed AMODE 31/AMODE 64 environment.
- Runtime APAR PH59864 (V2R5 or later): When PTFs for LE APAR PH56800 and COBOL Runtime APAR PH59864 are installed on z/OS 2.5 or later systems where COBOL programs run, the AMODE 31 subprograms called by the caller program can be either a DLL or a non-DLL.
UTF-8 support
- The native support for UTF-8 data items is provided by a new
USAGEclause of UTF-8, plus a picture symbol 'U', which together define a new class, category, andUSAGEof data in Enterprise COBOL. (Symbols used in the PICTURE clause) - The UTF-8 literal formats that Enterprise COBOL provides are basic UTF-8 literals and hexadecimal notation for UTF-8 literals. (UTF-8 literals)
- You can work directly with UTF-8 data. (Using UTF-8 data (Unicode) in COBOL)
PH47577: When you use the figurative constant HIGH-VALUE
in a context that requires UTF-8 characters, its value is UTF-8 character UX'F48FBFBF' corresponding
to Unicode code point U+10FFFF, except when HIGH-VALUE is used in a move or compare operation with a
fixed byte-length UTF-8 data item that has a length that is not a multiple of 4 bytes. (Using UTF-8-character
figurative constants)
Support of 2002 and 2014 COBOL standards
- New
DYNAMIC LENGTHclause - Use this clause to specify a dynamic-length elementary item. A dynamic-length elementary item is a data item whose length might change at run time. This is part of the 2014 COBOL Standard. (DYNAMIC LENGTH clause)
- The
REPOSITORYparagraphFUNCTIONspecifierINTRINSIC INTRINSICallows declaration of intrinsic function names that may be used without specifying the wordFUNCTION. This is part of the 2002 COBOL Standard. (REPOSITORY paragraph)- PH31047: New date and time intrinsic functions
- New date and time intrinsic functions are introduced that support
encoding and decoding of date and time information to and from formats
specified in ISO 8601, and that support encoding and decoding date
and time information to and from integers that are suitable for arithmetic. Note: COBOL Runtime LE APAR PH31133 must also be applied on all systems where programs that make use of these new date and time intrinsic functions are linked or run.
JSON enhancements
You can watch this video to get an overview of the JSON support in Enterprise COBOL for z/OS V6.
- New
NAME is OMITTEDphrase - PH18641: A new
NAME is OMITTEDphrase is added to theJSON GENERATEstatement to allow generation of an anonymous JSON object, whose top-level parent name is not generated. (JSON GENERATE statement) - New
CONVERTINGphrase - PH26789: A new
CONVERTINGphrase is added to theJSON GENERATEandJSON PARSEstatements so that you can generate and parse JSON boolean values:Note: COBOL Runtime LE APAR PH26698 must also be applied on all systems where programs that make use of this new feature are linked or run. - New
when-phraseandgeneric-suppression-phrase - PH30975: New
when-phraseandgeneric-suppression-phraseare added to theJSON GENERATEstatement so that you can conditionally suppress data items duringJSON GENERATE. (JSON GENERATE statement)Note: COBOL Runtime LE APAR PH31172 must also be applied on all systems where programs that make use of this new feature are linked or run.
Other language element changes
POINTER-32phrase added toUSAGEclause- A
POINTER-32phrase is added to theUSAGEclause, which can be used to define pointer data items or data-pointers. (POINTER-32 phrase) - Restored capability of
CALL ... USING - PH20724: The use of passing a
file-nameto a subprogram with theUSINGphrase of theCALLstatement was removed in Enterprise COBOL V6.3, but is restored in Enterprise COBOL V6.3 with PTF for APAR PH20724 installed. - New
UUID4intrinsic function - PH20997: The
UUID4intrinsic function is introduced.Note: COBOL Runtime LE PTF UI66560(V2R2)/UI66555(V2R3)/UI66557(V2R4) must also be applied on all systems where programs that make use of this new feature are linked or run. - Runtime APAR PH34885 (V2R3/V2R4): The UUID4 randomness and UUID4 intrinsic function requires significant CPU usage.
- PH20997: The
Compiler option changes
- New compiler options
-
LP- Use
LPto indicate whether an AMODE 31 (31-bit) or AMODE 64 (64-bit) program should be generated with the related language features enabled.LP(32)is the default. (LP) TUNE- PH34804:
Use
TUNEto specify the architecture for which the executable program will be optimized. (TUNE) INVDATA- PH37328:
INVDATAreplaces the deprecatedZONEDATAcompiler option and provides users fine-grained control over how the compiler generates code to handleUSAGE DISPLAYandUSAGE PACKED-DECIMALdata items that contain invalid data. (INVDATA) CONDCOMP- PH49504:
CONDCOMPcompiler option is introduced to control how conditional code will be displayed in the listing. (CONDCOMP) - LSACHECK
- PH63907: Use the LSACHECK option (LSACHECK is short for Linkage Section Addressability Check) to prevent inadvertent use of LINKAGE-SECTION data items prior to establishing addressability. This can prevent problems when migrating to z/OS 2.5 and later. (LSACHECK)
- Modified compiler options
-
ARCHARCH(7)is no longer accepted.INITCHECK- PH22581:
New suboptions
LAX | STRICTare added to control whether the compiler will issue warning messages for data items unless they are initialized on at least one, or on all, logical paths to a statement. (INITCHECK) NUMCHECKTEST- Runtime APARs PH29755(V2R3/V2R4) and PH30338(V2R3/V2R4 AMODE 64): New support is added for LLA/VLF managed programs where DWARF diagnostic information is included. (TEST)
RULES- PH33122:
New suboptions
LAXREDEF | NOLAXREDEFare added to inform users of redefined items with mismatched lengths. (RULES) SOURCE- PH35643:
New suboptions
DEC | HEXare added to control whether the generated sequence numbers for the listing of the source are in decimal or hexadecimal format. (SOURCE) OFFSET- PH35652:
The
OFFSEToption behavior is changed. If there are multiple blocks of instructions for a single line of COBOL code, multiple entries will be generated for those instructions in theOFFSETtable. (OFFSET)
- Deprecated compiler options
-
ZONEDATA- PH37328: This compiler option is deprecated but tolerated and
is automatically mapped to an equivalent form of the new
INVDATAcompiler option. (ZONEDATA)
Runtime changes
- PERFORM … UNTIL EXIT support
-
PH47372: You can specify
EXITin place of a condition in aPERFORMstatement. If theUNTILphrase with theEXITreserved word is specified, execution proceeds exactly as if the samePERFORMstatement were coded with condition-1 specified, except that condition-1 never evaluates as true. (PERFORM with UNTIL phrase) - VSAM dynamic access optional logic path
- PH56036 and PH56037: An optional alternate logic path is introduced for VSAM files that use the
ACCESS IS DYNAMICmode. The alternate logic path uses a direct read-by-key request instead of a point to a record by key. (VSAM dynamic access optional logic path) - New runtime options
- PH56036 and PH56037: The following COBOL runtime options are added:
- VSAMDYNAMICDIR: Changes the dynamic access method of VSAM to a direct read-by-key request. (VSAMDYNAMICDIR)
- DISABLEUOPTREPORT: Suppresses the COBOL runtime options report. (DISABLEUOPTREPORT)
- New runtime messages
- Runtime APARs PH63898 (for 31-bit/AMODE31) and PH63939 (for 64-bit/AMODE64) provide new runtime messages for ABENDs due to LSACHECK to better explain the 0C4 ABEND. (LSACHECK)
Migration assistance
- New runtime option
IGZCOMPATforMERGEstatement - Runtime APARs PH20569(V2R2) and PH21261(V2R3/V2R4): A new runtime
option
IGZCOMPATforMERGEstatement is introduced to obtain support forDFSORToptionNOBLKSETand the conventional merge method for Enterprise COBOL V5 or later versions. - New option
QSAMBUFFINITCHARadded toIGZUOPTmodule - Runtime APAR PH25917: A new option
QSAMBUFFINITCHARis added to theIGZUOPTmodule that allows you to control the initial character used for QSAM buffer initialization. (Controlling initialization of QSAM buffer)
Listing changes
- Listing terminologies change as follows:
Static Mapis changed toINITIAL HEAP STORAGE MAP. (Example: initial heap storage map)Writeable static area (WSA)is changed tostorage. (Reading LIST output)WSA24is changed toBELOW THE LINE STORAGE. (Example: initial heap storage map)Automatic Mapis changed toSTACK STORAGE MAP. (Example: DSA memory map (stack storage map))
- PH40562: A new signature information byte is added for the
DECIMAL-POINT IS COMMAclause so that the compiler can indicate to the debugger when COBOL programs have theDECIMAL-POINT IS COMMAclause. (Signature information bytes)
Installation customization changes
- The installation customization for placing compiler phases into shared storage is removed.
- PH37331: Adds support for diagnosing miscoded options or options
coded as
OPTION()instead ofOPTION=in the COBOL customization macro. (Changing the defaults for compiler options)
Compiler message changes
- New messages
-
- IGYCB7315-W: A reference modifier with a non-positive value was found. (IGYCB7315-W)
- IGYCB7316-W: A reference-modification length with a non-positive value was found. (IGYCB7316-W)
- IGYCB7317-W: A reference-modification length value caused reference to be made beyond the rightmost character of &1. (IGYCB7317-W)
- IGYCB7318-W: A reference-modifier start value exceeded the number of characters in &1. (IGYCB7318-W)
- Changed messages
- PH42280: The following messages are updated to report additional
information and return codes:
- IGYSI5305-U (IGYSI5305-U)
- IGYSI5306-U (IGYSI5306-U)
- Removed messages
-
- IGYPS0212-S
COBOL/JNI interface enhancement
Runtime APAR PH37101(V2R3/V2R4): An enhancement is made to assist COBOL programs running in AMODE 31 to interact with Java™ programs in AMODE 64. (COBOL programs in AMODE 31 interacting with Java programs in AMODE 64)
Debugging enhancement
Runtime APAR PH61133 (V2R4 or later): You can use ddname IGZPROUT
at the run step of your JCL to generate a report of all COBOL 5 or later programs that are called
dynamically, statically, and via DLL linkage. (Generating a report of dynamically called COBOL programs)