COBOL back from the dead... again
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 an early version, you’d recognise some of the concepts.
Printing numbers, text
One big feature 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 a computer science lecturer introduced us to COBOL. I remember him saying that the language was still important, if we were going to end up as programmers — that was never going to be me — 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.
- 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. ↩︎