web analytics

Many US systems that process unemployment claims still run on COBOL, a 60-year-old programming language that relatively few coders understand.

IBM plans to offer free COBOL training to address overloaded US unemployment systems:

“IBM is releasing a free training course next week to teach the 60-year-old programming language COBOL to coders. It is also launching a forum where those with knowledge of the language can be matched with companies in need of help maintaining their critical systems.

“The moves come in response to desperate pleas by state governors for anyone with knowledge of COBOL to volunteer their time to help keep unemployment systems functioning, a critical need as the coronavirus has resulted in an unprecedented surge in people being laid off and having to claim unemployment benefits.”

Younger readers may be mystified by this. COBOL is a programming language from the early 1960s. It was mainly used to write business applications1 on mainframe computers.

It wouldn’t be accurate to say COBOL is like Basic, but there are some similarities. If you’ve used Basic, especially one of the earliest forms, you’d recognise some of the concepts.

Printing numbers, text

One of its big features back in the day was the ability to carefully place printed numbers and text in the right places on forms… so that computers could, among other things, write paper cheques.

This was a strength, but, in a sense it turned out to be a weakness, as we shall see later.

Another big feature of COBOL something newer programming languages might learn from, is that it is self-documenting. That is, it is easy to write code in a way that other programmers can follow. This was important as it meant others could pick up the pieces at any point.

In 1975 I studied Computer Science A Level at a technology college in the UK. We mainly worked in Fortran, another early language, and Assembler, which is a kind of half way house between machine code and a formal language. There was some Basic and some COBOL.

COBOL obsolete in the 1970s… sort of

At that time one of the Computer Science Lecturers introduced us to COBOL. I remember him saying that the language was still important, if we were going to end up as programmers it would probably be what we would use at first. However, he went on to say  COBOL probably wouldn’t be around much longer.

That was 45 years ago. It is still going strong.

The headline mentions that COBOL is back from the dead again. That’s because it had a come back in the late 1990s. Much of the problem that was known as the millennium bug or Y2K, was to do with COBOL code.

In the late 1990s, many important programmes, especially those used for billing systems and for government, used COBOL. The printing features had standard ways of handling numbers and, in particular dates.

From memory, correct me if this is wrong, COBOL could handle the year number in more than one format, but almost every programmer stuck to using just two digits to show the year. So they represented 1975 as 75. When the year 2000 rolled around, most COBOL programs interpreted this a 1900. The error would then cause problems elsewhere in a program.

COBOL’s second coming

So in the late 1990s, industry dragged COBOL programmers out of retirement to fix up the software some of them wrote in the first place. I fielded calls from recruiter offering me huge money to work on fixing COBOL code.

Keep in mind that I have never worked as a programmer. I did one year of university Computer Science before realising this was not the career for me. And my only brush with COBOL was a few lectures during the mid 1970s. This tells you just how desperate businesses were to get their code fixed in the late 1990s.

Now COBOL is back in the spotlight as many US unemployment systems still use the language. They are busy right now with US unemployment rates going through the roof. IBM is training people to fixed COBOL code.

Undead software

Here’s the weird thing about COBOL. It wasn’t even remotely cutting edge technology by 1980, yet a lot of mainframe programs depended on it. Companies rarely reworked programs with more modern programming languages. Instead they employed teams to keep maintaining and tweaking ancient code. Over time they dropped many old programs for newer technology, but not at the pace you might imagine.

Because everyone knew COBOL was past its sell-by date, people didn’t worry about the looming Y2K problem until the late 1990s. They assumed the old code would be replaced by then. But it wasn’t. Those programs kept churning on.

I found this reference at the Six Colors website:

Back in 2015 my pal Glenn Fleishman found the oldest computer program still in use for MIT Technology Review, and guess what:

In 1958, the United States Department of Defense launched a computerized contract-management system that it dubbed Mechanization of Contract Administration Services, or MOCAS (pronounced “MOH-cass”). The system was designed to use the latest in computation and output technology to track contracts in progress and payments to vendors.

Fifty-seven years later, it’s still going…. MOCAS is written in COBOL.

On and on

That same attitude applied in the late 1990s. Programmers patched code on the assumption that the clunky old COBOL programs that had made it to 2000 were not going to stay in use much longer. This lead to another problem.

It’s not only COBOL that carried on this way. Microsoft Windows retained many original lines of code from the 1980s well into this millennium. I’m not sure if it is still true today, but for decades Microsoft Word included segments of ancient code. In many cases the app didn’t actually use the code, but developers were often unwilling to remove it until the next big clean up.


  1. In those days people rarely talked of applications. If they did, it was more often about the application of the computer to a task than a synonym for program. Likewise, the people who wrote programs were always programmers, I don’t recall hearing the term developer until well into the PC era. Again, if you remember otherwise, feel free to comment. I’m not infallible. Nor is my memory. ↩︎

18 thoughts on “COBOL back from the dead… again

  1. Ah, COBOL – hated it when at Carrington Polytech studying it back in 1991. Even then I didn’t understand why they even had a course for it.

    And the reason why they programmers were using two digit dates instead of four digit was because they were trained to count every byte that they used. Back then, every byte was in short supply and excess profligacy could end up with the program crashing.

    Ancient code that needs replacing really wouldn’t surprise me either as so many people work under the delusional proverb:

    If it aint broke, don’t fix it

    Just because it ‘aint broke’ doesn’t mean that its working as well as it should be either.

    • Let me tell you about counting every byte. The mainframe I learnt COBOL on had a magnetic core memory with 512 bytes. That’s not even 1k, half a k. So yes, every byte was sacred.

    • The problem with these old systems is that a huge web (or rat’s nest, if you prefer) of other applications has grown up around them, each of which depends on the quirks of the central COBOL system.

      Replacing the COBOL has unknowable but probably enormous ramifications throughout the (inevitably large, old and complex) organisations that are using it.

      And the work is all cost with no payoff, from a managers’ point of view.

      It’s just not worth the risk. And so COBOL will still be with us in 2060.

Want to have your say on this? Over to you:

%d bloggers like this: