What’s New in COBOL

This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production.

The reference material consulted while preparing these pages is listed in the section bibliography.

This page is written against ISO/IEC 1989:2023 (edition 3, January 2023; an upcoming 4th edition is in ballot), against IBM Enterprise COBOL for z/OS 6.5 (generally available 13 June 2025, PTFs through September 2026) on z/OS 3.2, and against GnuCOBOL 3.2 (28 July 2023, the latest release). The release facts were checked against the vendors' pages on 2026-10-20, the GnuCOBOL statements marked "tried" were compiled with cobc -x -Wall and run on that date, and the items that could not be read in full are worded without naming a release. z/OS items are labelled "z/OS; not run here".

The page answers three questions: what does each edition of the language add (and where in this guide is it taught), what do the compilers I will actually use support today, and which statements in the book this guide consulted have been overtaken. It is a map; the detail is on the page each row links to. For the history before 2002 see History and Standards; for the compilers and dialects see Compilers and Dialects.

The standard

The standard is ISO/IEC 1989. Edition 3 was published in 2023 and replaced the 2014 edition; the 2014 and 2002 editions are withdrawn. A 4th edition is in preparation and is mentioned here only as upcoming: no feature of it is described, and no date is given because the ISO catalogue page could not be read when this page was checked. The standard itself is sold by ISO and INCITS, so the details below are taken from INCITS announcements and from the IBM and GnuCOBOL documentation.

What COBOL 2002 added

Addition Where it is taught

Object orientation (classes, methods, interfaces)

Object-Oriented COBOL

Free-format source

Reference Format: Fixed and Free

User-defined functions

User-Defined Functions and Prototypes

Boolean, national, binary and floating-point data types; Unicode support

USAGE and Numeric Representation, National, UTF-8 and Code Pages

Exception handling

Error Handling and Declaratives

The compiler-directing facility (>>IF, >>DEFINE)

Compiler Directives and Conditional Compilation

Recursion (RECURSIVE)

Subprograms: CALL and Linkage

The SCREEN SECTION

ACCEPT, DISPLAY and Console I/O

Record locking

File Concepts, SELECT and FD

Report Writer, back in the standard

Reports and Report Writer

What COBOL 2014 added

Addition Where it is taught

Dynamic-capacity tables (OCCURS DYNAMIC)

Tables and OCCURS

Dynamic-length items (DYNAMIC LENGTH)

Pointers and Dynamic Storage

Function pointers

Pointers and Dynamic Storage

IEEE 754 floating point

USAGE and Numeric Representation

Rounding modes (the ROUNDED MODE phrase)

Arithmetic and COMPUTE

Locale support

National, UTF-8 and Code Pages, Dates and Times

What COBOL 2023 added

Addition Where it is taught

Asynchronous messaging (SEND and RECEIVE)

Named here only; neither Enterprise COBOL 6.5 nor GnuCOBOL 3.2 implements it.

Boolean XOR and the shift operators

History and Standards

63-character words

Words, Literals and Figurative Constants

Timed PERFORM and pause, PERFORM UNTIL EXIT, and the inline exception-checking PERFORM

PERFORM and Structured Programming

DELETE FILE

File Concepts, SELECT and FD

VALUE for numeric-edited items and user-defined EDITING

The PICTURE Clause

USAGE ... NO SIGN

USAGE and Numeric Representation

INSPECT BACKWARD

STRING, UNSTRING and INSPECT

LINE SEQUENTIAL organization

Sequential Files

SET of a dynamic-length item’s length

Pointers and Dynamic Storage

SUPPRESS WHEN on alternate keys

Indexed Files and VSAM

COMMIT and ROLLBACK

Embedded SQL and Db2

EC-I-O-WARNING

Error Handling and Declaratives

The 2023 additions are the ones compilers have implemented least. A feature in the standard is not a feature in your compiler; the support table in Compilers and Dialects is the quick check, and the GnuCOBOL results further down this page show it for several 2023 items.

IBM Enterprise COBOL for z/OS 6.3, 6.4 and 6.5

Enterprise COBOL 6.x is the mainframe compiler used by every z/OS page. Each release adds language and tooling features (the 6.5 list below is from IBM’s "What’s new" page, checked 2026-10-20; the 6.3 and 6.4 lists could not be re-read from the IBM page on that date and come from the issue notes behind this guide, so check IBM’s release notes for them).

6.3

New in 6.3 Where it is taught

LP(64) (64-bit addressing)

Compiling, Linking and Language Environment

USAGE UTF-8 and PIC U

National, UTF-8 and Code Pages

DYNAMIC LENGTH items

Pointers and Dynamic Storage

POINTER-32

Pointers and Dynamic Storage

PERFORM UNTIL EXIT

PERFORM and Structured Programming

The UUID4 intrinsic function

Intrinsic Functions

The INITCHECK and INVDATA options

Legacy Features and Migration, Debugging and Troubleshooting

6.4

New in 6.4 Where it is taught

Java interoperability without OO COBOL; AMODE 31 and 64 interoperability

Interoperability with C, Java and Python

FUNCTION-ID user-defined functions and prototypes

User-Defined Functions and Prototypes

CONTENT-OF

Intrinsic Functions

SMARTBIN and ARCH(14)

Compiling, Linking and Language Environment

JSON ENCODING and nulls

JSON GENERATE and PARSE

6.5 (generally available 13 June 2025)

IBM’s "What’s new in Enterprise COBOL for z/OS 6.5" page lists these base items: user-defined type support, index-name qualification and high-low qualification (the :: form), VSAMDB support, a new SMARTBIN suboption, the ULENGTH function enhancement, the JSON GENERATE COUNT BYTE-LENGTH enhancement, changes to ARCH and TUNE, OMITTED class test and OPTIONAL parameter changes, and improved DLL naming for non-OO COBOL and Java interoperability.

New in 6.5 Where it is taught

TYPEDEF and TYPE, :: qualification, index-name qualification

REDEFINES, RENAMES and TYPEDEF

VSAMDB

Indexed Files and VSAM

ARCH(15) and TUNE(15) for the z17; ARCH(10) removed; ARCH(11) is the default

Compiling, Linking and Language Environment, Performance and Compiler Options

The OMITTED class test and OPTIONAL BY REFERENCE parameters

Subprograms: CALL and Linkage

ULENGTH with UTF-8 arguments, SMARTBIN NAMES

National, UTF-8 and Code Pages, Intrinsic Functions

JSON GENERATE COUNT ... BYTE-LENGTH

JSON GENERATE and PARSE

Simpler non-OO Java interoperability

Interoperability with C, Java and Python

The 6.5 PTFs listed by IBM, with the month of each:

When PTF What it adds

January 2026

PH69556

UTF-8 enhancements, including numeric moves with UTF-8 data. See National, UTF-8 and Code Pages.

March 2026

PH70635

New suboptions for ADATA (EMBEDDED and SEPARATE), and support for IBM Semeru Java 25 on z/OS (no identifier listed by IBM). See Debugging and Troubleshooting and Interoperability with C, Java and Python.

July 2026

PH72005

z/OS UNIX enhancements, covered with cob2 in Compiling, Linking and Language Environment.

September 2026

PH73209

Strong types (STRONG typedefs). See REDEFINES, RENAMES and TYPEDEF.

September 2026

PH73031

The PUSH and POP compiler directives. See Compiler Directives and Conditional Compilation.

September 2026

PH73033

No warning when the CICS and DYNAM options are used together. See CICS Online Programming and Compiling, Linking and Language Environment.

September 2026 is the latest PTF month IBM lists. No 6.6 release had been announced when this page was checked. IBM publishes the documentation library for each release at Enterprise COBOL for z/OS documentation library.

GnuCOBOL 3.2 and the status of 4.0

GnuCOBOL 3.2 was released on 28 July 2023 and is still the release the project’s home page offers; the SourceForge file area lists 3.2 and, after it, only nightly snapshots. There is no 4.0 release: version 4.0 exists as development snapshots, so treat it as unreleased and do not recommend a distribution package named gnucobol4, which is an old snapshot. (The 4.0 status could be confirmed only partly: the home page does not mention it, and the SourceForge folder has no 4.0 release.)

What 3.2 adds according to the project’s 3.2 release notes, together with the result of trying some of it:

New or changed in 3.2 Tried on 3.2.0 Where it is taught

STOP RUN WITH ERROR / ERROR STATUS

STOP RUN WITH ERROR STATUS 3 ended the program with exit status 3; STOP RUN WITH ERROR ended it with 1.

Error Handling and Declaratives

FUNCTION HEX-OF and FUNCTION BIT-OF

HEX-OF("Ulysses ") gave 556C797373657320; BIT-OF("A") gave 01000001.

Intrinsic Functions

PERFORM UNTIL EXIT and long names

Accepted with no warning, including a 49-character data name (the 2023 limit is 63).

PERFORM and Structured Programming

INSPECT BACKWARD (2023)

Compiles with INSPECT BACKWARD is not implemented [-Wpending]: accepted, but not implemented.

STRING, UNSTRING and INSPECT

Boolean XOR (2023)

error: 'XOR' is a reserved word, but isn't supported.

History and Standards

The GCOS dialect, new -fformat formats, the COBOL-WORDS directive

Not tried here; see Compilers and Dialects.

Compilers and Dialects

--coverage, better GDB support

Not tried here.

Debugging and Troubleshooting, DevOps and CI/CD for COBOL

LINE SEQUENTIAL OPEN I-O and REWRITE

Not tried here.

Sequential Files

Experimental UTF-8 and FLOAT-EXTENDED

Marked experimental by the compiler (-Wunfinished).

National, UTF-8 and Code Pages

Compatibility changes to know when upgrading from 3.1: the FUNCTION RANDOM algorithm changed (sequences differ from older releases and from IBM’s), and the sizes used for BY VALUE arguments changed on 64-bit platforms. For packaging: Homebrew’s gnucobol is 3.2, and Debian trixie ships gnucobol3 3.2 (bookworm ships 3.1.2). The HTML Programmer’s Guide on the GnuCOBOL site is still the 3.1-RC1 edition; the 3.2 edition is the PDF on the project’s guides page.

The program used for the "tried" column

       IDENTIFICATION DIVISION.
       PROGRAM-ID. WN1.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  BOOK-TITLE           PIC X(8) VALUE "Ulysses".
       01  PASS-COUNT           PIC 9 VALUE 0.
       01  LOAN-COUNT-FOR-THE-CURRENT-CIRCULATION-RUN PIC 99 VALUE 7.
       PROCEDURE DIVISION.
       MAIN-PARA.
           DISPLAY "HEX-OF    : " FUNCTION HEX-OF(BOOK-TITLE)
           DISPLAY "BIT-OF    : " FUNCTION BIT-OF("A")
           PERFORM UNTIL EXIT
               ADD 1 TO PASS-COUNT
               DISPLAY "PASS " PASS-COUNT
               IF PASS-COUNT = 2
                   EXIT PERFORM
               END-IF
           END-PERFORM
           DISPLAY "LONG NAME : "
               LOAN-COUNT-FOR-THE-CURRENT-CIRCULATION-RUN
           STOP RUN.

Compiled with cobc -x -Wall wn1.cob (and with -std=ibm), no warnings, it prints:

HEX-OF    : 556C797373657320
BIT-OF    : 01000001
PASS 1
PASS 2
LONG NAME : 07

(BOOK-TITLE has eight bytes, so the hexadecimal result includes the trailing space, 20.)

The platform around the compilers

Product Status when this page was checked (2026-10-20)

z/OS

z/OS 3.2 is the release used on the z/OS pages (documentation at IBM z/OS 3.2.0); its landing page could not be read in full, so no more is claimed.

Db2 for z/OS

Db2 13 (IBM Db2 13 for z/OS documentation).

CICS Transaction Server

The 6.x documentation lists 6.1, 6.2 and 6.3; 6.3 is the latest listed (IBM CICS TS 6.x documentation).

IMS

IMS 15.6 (IBM IMS 15.6 documentation).

Zowe

The stable documentation covers Zowe 3.x (a 3.6.x LTS line); version 2 support ends 30 March 2027 according to those pages (Zowe overview).

Editors

IBM Z Open Editor supports Enterprise COBOL 6.5 (IBM Z Open Editor on the VS Code Marketplace); some features need a licence after a trial.

Testing tools

COBOL Check, an Open Mainframe Project tool, was archived on 28 May 2026 and is read-only. The maintained options are IBM’s zUnit (IBM Z Open Unit Test), Broadcom’s Test4z and Galasa. See Testing COBOL Programs.

Other compilers

IBM COBOL for Linux on x86 1.2; Rocket Visual COBOL and Enterprise Developer; Fujitsu NetCOBOL. See Compilers and Dialects.

Where the book is outdated

Tom Taulli’s Modern Mainframe Development (O’Reilly, 2022) was consulted for the topics it covers, and no text or code is reproduced from it. It was written in 2021 and 2022, and its statements about versions have been overtaken. Every such statement that this guide found is collected below, with the current fact, the source for it, and the page where it is explained in context.

The book says Current fact Source Where covered

Enterprise COBOL V6.3 (2019) is "the latest" COBOL, and the history of the standard stops at COBOL 2002

Enterprise COBOL 6.5 (2025) is current, with PTFs through September 2026, and the standard was revised in 2014 and 2023.

IBM: What’s new in 6.5

History and Standards

z/OS 2.4

z/OS 3.2.

IBM z/OS 3.2.0 documentation

Mainframe Environment Primer

Db2 12

Db2 13.

IBM Db2 13 for z/OS documentation

Embedded SQL and Db2

CICS 5.6

CICS TS 6.x; 6.3 is the latest listed.

IBM CICS TS 6.x documentation

CICS Online Programming

IMS 15 or 15.1

IMS 15.6.

IBM IMS 15.6 documentation

IMS DL/I Overview

The z15 is the newest mainframe

The z16 (2022) and the z17 (2025) followed; Enterprise COBOL 6.5 adds ARCH(15) and TUNE(15) for the z17.

IBM: What’s new in 6.5

Performance and Compiler Options

Zowe v1 CLI syntax, with Node 8 and Java 8 prerequisites

Zowe 3.x (3.6.x LTS); the prerequisites and some command shapes changed.

Zowe documentation

Modern Tooling: VS Code and Zowe

IBM’s free 180-day z/OS access

IBM Z Xplore replaced it.

IBM Z Xplore

Getting Started

OpenCobolIDE as the PC environment

It is unmaintained: use GnuCOBOL 3.2 with VS Code.

GnuCOBOL home page

Modern Tooling: VS Code and Zowe

Micro Focus

Now part of Rocket Software, which took over the application-modernization portfolio.

See Compilers and Dialects for the vendor pages.

Compilers and Dialects

BMC/Compuware tooling (Topaz, ISPW, Abend-AID, Jenkins plug-ins) as the sponsor’s tools

They are named in prose only, next to IBM, Broadcom and open-source equivalents, and their demonstrations are not reproduced.

Vendor documentation

DevOps and CI/CD for COBOL, Debugging and Troubleshooting

Book errata

Besides outdated versions, the book has errors of fact or of code in the chapters this guide consulted. The correct rule is stated here and the faulty code is never reproduced.

Chapter Correct rule Where covered

4

A REDEFINES item must not have a stray PIC in the clause that names the base item, and its size has to agree with what it redefines (a $ZZ9.99 edited field has seven characters, not six). Binary integers are exact: COMP is not "not good for math because of rounding". The real hazards are truncation under TRUNC and decimal scaling.

REDEFINES, RENAMES and TYPEDEF, USAGE and Numeric Representation

5

The statement is OPEN INPUT, not "OPEN READ". The FILE STATUS field is declared in WORKING-STORAGE, not inside the record. A PC-style ASSIGN TO "name.dat" with LINE SEQUENTIAL does not belong with z/OS JCL: Enterprise COBOL supports LINE SEQUENTIAL only for z/OS UNIX files.

Sequential Files, File Status Codes

7

CALL passes its arguments with USING, and BY REFERENCE, BY CONTENT and BY VALUE are different contracts. The "copy library" step is not IEBCOPY: the compile step’s SYSLIB DD is what resolves COPY.

Subprograms: CALL and Linkage, Copybooks and REPLACE

8

EXEC SQL INCLUDE member brings in a DCLGEN member at precompile time, not "the table from the Db2 database". Use INCLUDE SQLCA instead of a hand-coded SQLCA. A cursor is opened and fetched under the name it was declared with. Program preparation (precompile or coprocessor, BIND, packages and plans) is part of the job.

Embedded SQL and Db2

Common mistakes

  • Reading a feature’s presence in the standard as support in your compiler. Check the table in Compilers and Dialects; GnuCOBOL 3.2 rejects or only stubs several 2023 features.

  • Quoting a version from a 2022 book or blog as current. Use the table above and the vendor’s page.

  • Recommending the gnucobol4 package. It is an old snapshot, not a 4.0 release.

  • Confusing a PTF with a release. The September 2026 items are PTFs to 6.5; check the PTF level of the compiler you have (see Compiling, Linking and Language Environment).