"The guy who wrote it left and nobody knows what it does" is a poor excuse with a self-documenting language like COBOL. How much sense do you think your tangled mess of Java will make in 50 years?
"The guy who wrote it left and nobody knows what it does" is a poor excuse with a self-documenting language like COBOL. How much sense do you think your tangled mess of Java will make in 50 years?
My guess as to where that came from:
1. Tech companies stay relevant by reinventing new markets via new languages / frameworks. 2. New programmers can side step the "rookie" condition by adopting a new language thus leveling the playing field for that language / framework (i.e. everyone is a rookie). Plus whatever is new is hot, and everyone wants to know what's hot. 3. Because of this, few are interested in old languages. I was in college in the 1990s and COBOL was pretty much out as far as anything anyone wanted to learn. It was all Windows.
So based on 1-3, the reason "we must replace it because it's old!" mentality is out of necessity. The older the system / language, the harder it will be to find people to work on it. This has inherent risk. Of course these banking systems have decades of business logic, acquisition logic, and government regulations built into them, rewriting it has it's own massive risk.
Adoption and ease of learning should always be considered when selecting a tech stack for a solution. COBOL's semantics are so foreign to modern programming languages that it makes the language pretty inaccessible.
Also, COBOL's strength is in the generation of reports, but in the end, it's no more expressive for that purpose than any general-purpose programming language coupled with a nice report generation library.
Do you? Lack of programmers, aside, it was created and evolved exactly for the kinds of jobs its used in.
I would also disagree with GP that COBOL's semantics are really very foreign. Variable declarations, assignments, expressions, loops, conditionals, etc. are not that different from other imperative languages. More verbose, certainly, but not foreign.
JCL on the other hand....
Something I wonder about all the time is why software has to be so fragile. We always put so much work into maintaining things downstream because things break upstream so often it's frustrating.