I never got the "we run 1970's cobol because it ain't broke" mantra.
Sure, you don't fix it. But you should damn well have parallel systems that perform the same functions in testing and have them there for decades to check their results always tally with the old junk. If you do it right, that means that should anything happen, you can just switch to the new code and carry on.
It reminds me of the switchover for Dabs.com who started out using code hand-written by the founder and then ended up doing an "upgrade" the other year to something that couldn't cope and didn't work. Why "switchover" at any point when you should be doing a smooth transition with result-testing to make sure everything tallies no matter which code you used? And if you do smooth transitions all the time, it's not a problem to upgrade systems, staff, skills whenever you want because nothing goes into service until it's tested and nothing goes out of service because you have no-one who knows how it works.
You're honestly telling me that it's cost effective to run mainframes on decades old code that nobody understands and then paying a fortune every time even the most minor thing goes wrong, and then paying HUGE transition costs on a short schedule if you absolutely must upgrade because of the problems, rather than just adding X% to costs, cycling staff (no old-timers who cost a fortune and are necessary to keep things running), cycling hardware, etc.?
I thought these people were supposed to know about money? I thought these systems were supposed to be critical.
Running on Cobol because "it worked" is not something to be applauded. That's like NASA still using the Apollo launch computers at ground control to handle their latest launches. Where you absolutely CANNOT upgrade, it's excusable, but come on.
And, I'm sorry, but the whole "we have to run batches overnight" crap was something that seemed outdated back when I sat my A-Level Computer Science exam years ago. You're honestly telling me that your systems can't cope in real-time nowadays? Really? How comes my "amount available" is instantly reflective of every online transaction within seconds then, but I don't see my "balance" decrease until a week later? Or is it just a way to find new methods of telling people they're overdrawn for a microsecond?