Language reference

COBOL

The batch-processing backbone of global banking and insurance. Still compiling, still running the overnight run.

History & foundation

Origin

COBOL was designed in 1959 by CODASYL, the Conference on Data Systems Languages, a committee representing six computer manufacturers and three U.S. government agencies. Grace Hopper served as a technical adviser to the effort and had already built FLOW-MATIC, an English-like language that heavily influenced COBOL's syntax, but the language itself was written by a subcommittee that included William Selden, Gertrude Tierney, Howard Bromberg, Vernon Reeves, and Jean E. Sammet. Sammet, one of the language's lead designers, was explicit that Hopper "was not the mother, creator, or developer of Cobol," even though her earlier work shaped it directly.

Design goals

COBOL was built for one purpose: business data processing that ordinary, non-specialist programmers could read and write. The design brief called for a language that made maximal use of English, ran the same way across different manufacturers' machines, and let organizations move to new hardware without rewriting their programs. Readability was treated as more important than computational elegance, which is why COBOL still reads like structured prose next to most other languages of its era.

Standards timeline

  1. 1960 · COBOL-60

    The initial specification, approved January 8, 1960.

  2. 1961 · COBOL-61

    First revision of the original specification.

  3. 1963 · COBOL-61 Extended

    Added SORT and Report Writer facilities.

  4. 1968 · COBOL-68

    First ANSI standard (USA Standard COBOL X3.23), aimed at ending incompatibility between vendor dialects.

  5. 1974 · COBOL-74

    ANSI revision adding new file organizations, the DELETE statement, and segmentation.

  6. 1985 · COBOL-85

    Major revision adding scope terminators, EVALUATE, and inline PERFORM.

  7. 2002 · COBOL 2002

    Added object-oriented syntax, free-form source code, and Unicode support.

  8. 2014 · COBOL 2014

    Made several features optional and added method overloading.

  9. 2023 · COBOL 2023

    Added asynchronous messaging, transaction processing support, and an XOR operator.

~200 billion lines

Gartner Group's 1997 estimate of COBOL code in existence at the time, running an estimated 80% of all business programs then in production.

Gartner Group, 1997 (via Wikipedia)

95% of the time

Share of the processing behind a credit or debit card swipe that ran on COBOL, as of 2020.

Wikipedia: COBOL, citing 2020 reporting

Over 60% of organizations

Share of surveyed organizations still using COBOL, per Computerworld surveys conducted between 2006 and 2012.

Computerworld surveys, 2006 to 2012 (via Wikipedia)

~1,700 open COBOL roles vs. 30,000+ for Java

A 2020 snapshot of Glassdoor job postings, cited to illustrate how few programmers are entering the COBOL pipeline relative to demand.

GitLab: The COBOL Programmer Shortage, April 2020

COBOL history and figures compiled from public sources, cited above. Corrections welcome.

File status & abend codes

View all 73
File Status 00IBM Enterprise COBOL · Micro Focus · GnuCOBOL

Condition

The statement executed with no error, no boundary condition, and nothing unusual to report. This is the value your code should expect on the normal path.

Fix

No fix needed. If you are seeing this and still branching into error handling, check that your FILE STATUS comparison is testing the right condition, not just a non-zero first digit.

Pending source verification. Not yet checked against official documentation.
File Status 02IBM Enterprise COBOL · Micro Focus · GnuCOBOL

Condition

On a READ or WRITE against an indexed file, the record's key duplicates an existing record's alternate key, or a duplicate condition was otherwise allowed and detected.

Fix

Confirm whether the alternate key involved is defined WITH DUPLICATES. If it should be unique, check the write logic that produced the duplicate value upstream.

Pending source verification. Not yet checked against official documentation.
File Status 04IBM Enterprise COBOL · Micro Focus · GnuCOBOL

Condition

A READ was successful, but the length of the record retrieved does not match the length defined for the file's record area in the program.

Fix

Compare the FD record length against the copybook actually shipped with the data. This usually means the program is reading a file written by a different, incompatible layout version.

Pending source verification. Not yet checked against official documentation.
File Status 05IBM Enterprise COBOL · Micro Focus · GnuCOBOL

Condition

The file was declared with the OPTIONAL phrase in SELECT, and the OPEN found no file present at the assigned location.

Fix

This is informational, not an error, if your program is written to handle a missing optional file. Confirm your OPEN logic branches correctly on status 05 instead of falling through to file-not-found handling meant for status 35.

Pending source verification. Not yet checked against official documentation.

Frequently asked

Is COBOL still used in 2026?+

Yes. COBOL still processes a large share of banking, insurance, and government transactions worldwide, running on mainframes that handle high-volume batch and transaction workloads IBM's own z/OS platform is built for.

What does COBOL stand for?+

COBOL stands for Common Business-Oriented Language. It was designed in 1959 specifically for business data processing, not general-purpose or scientific computing.

Is COBOL hard to learn?+

COBOL's syntax is deliberately English-like and easier to read than most languages. The hard part is usually the surrounding mainframe environment (JCL, VSAM, CICS), not the language itself.

What is the most common COBOL error?+

File status 35 (file not found) and abend S0C7 (data exception from invalid numeric data) are the two most frequently reported COBOL problems in production.

Is COBOL a dying language?+

COBOL's new-project adoption has been flat for decades, but its existing footprint is not shrinking meaningfully. The real risk is workforce, not the language being retired.

Can COBOL run outside of a mainframe?+

Yes. GnuCOBOL is a free, open-source COBOL compiler that produces native executables and runs on Linux, macOS, Windows, BSD, and most Unix variants, not just IBM z/OS. It's commonly used for training, testing, and even some production workloads that don't need mainframe-specific features like CICS or VSAM.

What is JCL, and do I need to learn it to work with COBOL?+

JCL (Job Control Language) is the batch scripting language z/OS uses to run programs, allocate datasets, and chain job steps together; a COBOL program on a mainframe almost always gets invoked through a JCL job rather than run directly. Most COBOL maintenance work eventually touches JCL, so shops treat it as a companion skill rather than optional.

What is a COBOL copybook?+

A copybook is a separate file holding a reusable data layout, most often a record structure, that multiple COBOL programs pull in with a COPY statement instead of retyping the same field definitions everywhere. It's COBOL's version of a shared header file, and mismatched copybooks between programs are a common source of subtle data corruption.

Is COBOL object-oriented?+

As of the COBOL 2002 standard, yes: it added classes, objects, methods, and inheritance on top of the traditional procedural syntax. In practice, most production COBOL predates that standard and is written procedurally, so object-oriented COBOL shows up far more in newer code than in the decades-old batch programs still running most mainframe workloads.

What was the Y2K "windowing" fix, and is it still a problem?+

Windowing was a common Y2K shortcut: instead of expanding a two-digit year field to four digits, programmers added logic that guessed the century based on a threshold value, or pivot year, chosen per program. That guess only holds until the real calendar crosses the chosen pivot, so some windowed COBOL code is already producing wrong-century dates today, decades after Y2K itself, in programs nobody has re-audited since.

How much does keeping old mainframe systems running actually cost?+

It adds up fast even without a full modernization project. The U.S. Government Accountability Office found that just 10 of the federal government's most critical legacy IT systems, some COBOL-based, ranging from 8 to 51 years old, collectively cost about $337 million a year to operate and maintain, and federal agencies overall put roughly 80% of their IT budgets toward operating and maintaining existing systems rather than building new ones.

From the community

Real questions from public forum threads, with credit to who asked and who answered. Our answer restates the fix and links to the matching reference page where one exists.

Why does my COBOL program throw file status 35 when the file clearly exists?

Asked by pthboss on Tek-Tips forum, 2003

On IBM COBOL for AIX, the fix was changing the SELECT clause from ORGANIZATION IS SEQUENTIAL to ORGANIZATION IS LINE SEQUENTIAL. The file existed, but the organization declared in the program did not match the actual file format on that platform.

pthboss (original poster, self-resolved)

Our answer

File status 35 usually means the file genuinely is not there, but as this thread shows, some platforms return the same code for an organization mismatch instead. Check the file's actual format before assuming it is missing: on AIX and Linux COBOL, a flat text file usually needs LINE SEQUENTIAL, not SEQUENTIAL.

Full reference page →

I keep getting file status 35 on a VSAM file even though the DD and filename check out. What else could it be?

Asked by Jagjeet Dayal on zMainframes forum, February 2024

For a VSAM file, status 35 can appear if the file is empty. The fix is to load at least one record into it, either through the program itself or with an IDCAMS REPRO statement, before the OPEN that is failing.

Zum13

Our answer

An empty VSAM cluster is one of the more counterintuitive causes of status 35, since the dataset does exist and is correctly cataloged. If your DD, catalog entry, and organization all check out, confirm the cluster actually has at least one record before you spend more time on the DD statement.

Full reference page →

Is it worth learning COBOL in 2026?

Asked by Simon Ritchie on CodeRanch forum, ongoing thread

Demand is likely strong because far fewer people still remember how to maintain these systems, and legacy code remains vital to banks and similar institutions.

Campbell Ritchie

Speaking from a life insurance and investments company: a wave of mainframe developer retirements was approaching, and migration costs are high enough that dependency on COBOL will persist.

Randy Maddocks

COBOL is mainframe-centric, so budget time to learn the surrounding environment too. Hercules (an emulator) and GnuCOBOL are accessible ways to get hands-on without mainframe access.

Tim Holloway

Our answer

The forum consensus holds up against the numbers: COBOL job postings are a fraction of Java's, but the retiring-workforce problem is real, and migration away from COBOL systems is slow and expensive enough that demand for people who can read it is not going away soon. If you are starting from zero, GnuCOBOL plus a mainframe emulator is still the standard low-cost path in.

More on COBOL