A story has been making the rounds about how New Jersey suddenly needs COBOL programmers to fix its unemployment claims processing system. People have expressed horror, amusement or incredulity that COBOL is still being used, and that the system is so obsolete (reportedly running on 40 year old hardware.)

I’m not a COBOL programmer and I don’t work in the mainframe division, but I’d like to point out a few things about this story.

First of all, assuming they really are using a 40 year old mainframe, they could start by upgrading the hardware. In 2002 an entry level z800 ran two cores, each at 625MHz and started out at 80 MIPS (according to Technical Introduction: IBM eserver zSeries 800.) That’s only 20 years ago, and according to the spec sheet it was generally faster than the OS/390 systems that preceded it, so let’s assume their 40 year old mainframe can’t be any faster than that.

In comparison, a modern z14 mainframe (circa 2018) can run up to 170 processor cores, at 5.2GHz, and exceed 146,000 MIPS (again according to the technical guide).

Looking at I/O, the z800 had six 1GB/s STI links for all I/O. If I’m reading things correctly, the z14 can run 160 FICON Express16s cards each at 16GB/s. So that’s a leap from 6GB/s to 2560GB/s.

So sure, claims are up by 1,600%. But upgrading hardware could give them a machine thats 182,500% faster, if they really need it.

That’s not all, though. Compiler technology has also improved a lot in the last 40 years; or more specifically, optimizer technology has. You can get a standalone optimizer for your existing legacy COBOL binaries that will reoptimize the code, giving you an average 47% CPU load reduction.

I think the real story is revealed in CNBC’s coverage:

New Jersey plans to ask for volunteers with a variety of skills, including technologists

Key word: volunteers. Looks to me like it’s not really a technical problem, more of a money problem, with a side order of bad timing.

If you’re wondering why COBOL is still used for things like unemployment claim processing (and air flight booking and tax return processing and invoicing and and and…) the answer is that COBOL uses accurate decimal arithmetic for computation by default. Sure, Java has BigDecimal, but it’s ugly to use, whereas COBOL gets the math right with no coding overhead. That’s important to big companies, tax offices, and the Federal Reserve.