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:
POINTER
andPOINTER-32
phrasesSYNCHRONIZED
clause- 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
USAGE
clause of UTF-8
- New
- Support of 2002 and 2014 COBOL standards
New
DYNAMIC LENGTH
clauseThe
REPOSITORY
paragraphFUNCTION
specifierINTRINSIC
New date and time intrinsic functions (service)COMBINED-DATETIME
FORMATTED-CURRENT-DATE
FORMATTED-DATE
FORMATTED-DATETIME
FORMATTED-TIME
INTEGER-OF-FORMATTED-DATE
SECONDS-FROM-FORMATTED-TIME
SECONDS-PAST-MIDNIGHT
TEST-DATE-YYYYMMDD
TEST-DAY-YYYYDDD
TEST-FORMATTED-DATETIME
- JSON enhancements
Statement Description JSON GENERATE
New phrases (service): NAME is OMITTED
CONVERTING
when-phrase
generic-suppression-phrase
JSON PARSE
New phrases (service): CONVERTING
- Other language element changes
POINTER-32
phrase added toUSAGE
clause- Restored capability of
CALL ... USING
(service) - New
UUID4
intrinsic function (service)
- Compiler option changes
New Changed Deprecated LP
TUNE
(service)INVDATA
(service)CONDCOMP
(service)LSACHECK
(service)ARCH
INITCHECK
(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
IGZCOMPAT
forMERGE
statement - New option
QSAMBUFFINITCHAR
added toIGZUOPT
module
- 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
POINTER
andPOINTER-32
phrases underLP(64)
- When
LP(32)
is in effect, theUSAGE POINTER
andUSAGE POINTER-32
data types are synonyms. However, they behave differently when LP(64) is in effect.- A
POINTER
data item can be SET to a value from aPOINTER-32
data item. The high-order word of thePOINTER
data item is cleared to zero. (POINTER phrase) - A
POINTER-32
data item can be SET to a value from aPOINTER
data item. Only the low-order word of thePOINTER
data item is used in this case. It is a programming error if the high-order word of the AMODE 64POINTER
data item is not zero. (POINTER-32 phrase)
- A
- Using
SYNCHRONIZED
clause underLP(64)
- If the
SYNCHRONIZED
clause 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
USAGE
clause of UTF-8, plus a picture symbol 'U', which together define a new class, category, andUSAGE
of 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 LENGTH
clause - 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
REPOSITORY
paragraphFUNCTION
specifierINTRINSIC
INTRINSIC
allows 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 OMITTED
phrase - PH18641: A new
NAME is OMITTED
phrase is added to theJSON GENERATE
statement to allow generation of an anonymous JSON object, whose top-level parent name is not generated. (JSON GENERATE statement) - New
CONVERTING
phrase - PH26789: A new
CONVERTING
phrase is added to theJSON GENERATE
andJSON PARSE
statements 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-phrase
andgeneric-suppression-phrase
- PH30975: New
when-phrase
andgeneric-suppression-phrase
are added to theJSON GENERATE
statement 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-32
phrase added toUSAGE
clause- A
POINTER-32
phrase is added to theUSAGE
clause, 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-name
to a subprogram with theUSING
phrase of theCALL
statement was removed in Enterprise COBOL V6.3, but is restored in Enterprise COBOL V6.3 with PTF for APAR PH20724 installed. - New
UUID4
intrinsic function - PH20997: The
UUID4
intrinsic 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
LP
to 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
TUNE
to specify the architecture for which the executable program will be optimized. (TUNE) INVDATA
- PH37328:
INVDATA
replaces the deprecatedZONEDATA
compiler option and provides users fine-grained control over how the compiler generates code to handleUSAGE DISPLAY
andUSAGE PACKED-DECIMAL
data items that contain invalid data. (INVDATA) CONDCOMP
- PH49504:
CONDCOMP
compiler 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
-
ARCH
ARCH(7)
is no longer accepted.INITCHECK
- PH22581:
New suboptions
LAX | STRICT
are 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) NUMCHECK
TEST
- 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 | NOLAXREDEF
are added to inform users of redefined items with mismatched lengths. (RULES) SOURCE
- PH35643:
New suboptions
DEC | HEX
are added to control whether the generated sequence numbers for the listing of the source are in decimal or hexadecimal format. (SOURCE) OFFSET
- PH35652:
The
OFFSET
option 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 theOFFSET
table. (OFFSET)
- Deprecated compiler options
-
ZONEDATA
- PH37328: This compiler option is deprecated but tolerated and
is automatically mapped to an equivalent form of the new
INVDATA
compiler option. (ZONEDATA)
Runtime changes
- PERFORM … UNTIL EXIT support
-
PH47372: You can specify
EXIT
in place of a condition in aPERFORM
statement. If theUNTIL
phrase with theEXIT
reserved word is specified, execution proceeds exactly as if the samePERFORM
statement 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 DYNAMIC
mode. 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
IGZCOMPAT
forMERGE
statement - Runtime APARs PH20569(V2R2) and PH21261(V2R3/V2R4): A new runtime
option
IGZCOMPAT
forMERGE
statement is introduced to obtain support forDFSORT
optionNOBLKSET
and the conventional merge method for Enterprise COBOL V5 or later versions. - New option
QSAMBUFFINITCHAR
added toIGZUOPT
module - Runtime APAR PH25917: A new option
QSAMBUFFINITCHAR
is added to theIGZUOPT
module 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 Map
is changed toINITIAL HEAP STORAGE MAP
. (Example: initial heap storage map)Writeable static area (WSA)
is changed tostorage
. (Reading LIST output)WSA24
is changed toBELOW THE LINE STORAGE
. (Example: initial heap storage map)Automatic Map
is changed toSTACK STORAGE MAP
. (Example: DSA memory map (stack storage map))
- PH40562: A new signature information byte is added for the
DECIMAL-POINT IS COMMA
clause so that the compiler can indicate to the debugger when COBOL programs have theDECIMAL-POINT IS COMMA
clause. (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)