Slashdot Mirror


COBOL Turning 50, Still Important

Death Metal writes with this excerpt from a story about COBOL's influence as it approaches 50 years in existence: "According to David Stephenson, the UK manager for the software provider Micro Focus, 'some 70% to 80% of UK plc business transactions are still based on COBOL.' ... Mike Gilpin, from the market research company Forrester, says that the company's most recent related survey found that 32% of enterprises say they still use COBOL for development or maintenance. ... A lot of this maintenance and development takes place on IBM products. The company's software group director of product delivery and strategy, Charles Chu, says that he doesn't think 'legacy' is pejorative. 'Business constantly evolves,' he adds, 'but there are 250bn lines of COBOL code working well worldwide. Why would companies replace systems that are working well?'"

22 of 314 comments (clear)

  1. Oo, oo, oo! I know! by Samschnooks · · Score: 5, Insightful

    Why would companies replace systems that are working well?

    Because the director of IT or whatever his title is will want to be able to put on his resume that HE moved a company from a "Legacy" and "Outdated" system to a modern "web based solution" that enables "greater productivity" among the workforce saving "millions of dollars". Now, he can put that on his resume and go for the CTO, CIO, or whatever jobs.

    I've seen it and it works.

    1. Re:Oo, oo, oo! I know! by fuzzyfuzzyfungus · · Score: 4, Funny

      I'm guessing that this story involves enough java to float a battleship; but not quite enough to keep the interface responsive...

    2. Re:Oo, oo, oo! I know! by trash+eighty · · Score: 5, Insightful

      no if you fail you just get promoted out of harms way

    3. Re:Oo, oo, oo! I know! by plopez · · Score: 4, Insightful

      If and only if they're able to pull it off. It's also a nice way to end your carreer if you fail.

      no, you collect a bonus and bail out before it crashes in flames leaving someone else holding the bag. See also the bank failures for examples of this. See a pattern? I hate MBAs.

      --
      putting the 'B' in LGBTQ+
    4. Re:Oo, oo, oo! I know! by Tubal-Cain · · Score: 5, Funny
      How can I be more alert in the morning?

      add more Java

      Hey, you're right! That really is the solution!

    5. Re:Oo, oo, oo! I know! by coryking · · Score: 4, Interesting

      Depends. Staffing is one bit of the equation. You've also got to factor in "how easy is it to extend our existing application". Can you tie your COBOL stuff into your customer-facing billing system on your website? Can your call center be updated so the CSR's are all doing data entry on a web app or a "real" desktop application? I'm sure both are possible but I'm also sure both have price structures that are insanely high, but just a notch less insane as "hire a team of devs to dump COBOL"

      There is one more thing I'll toss out, but I'm not sure about. Location. If you are located in Bumbleskunk, USA, the talent pool is pretty small and you will have a hard time getting programmers to relocate (after all, if your company sucks, they are basically gonna have to move again to work some place else). I wonder if there is any correlation between "Uses COBOL" and "Is located in Bumbleskunk". In other words, how many companies headquartered in say, Boston or Silocon Valley use COBOL vs how many companies in say Cowtown use COBOL.

  2. Why replace it? by Anonymous Coward · · Score: 4, Funny

    Why would companies replace systems that are working well?

    So I can have a fucking job?

    1. Re:Why replace it? by artor3 · · Score: 4, Informative

      Learn COBOL, and you always will. My dad is a COBOL programmer for the NY state government. According to him, around 95% of their COBOL programmers are within 10 years of retirement. The youngin's (as he calls them) are in their mid to late forties.

      If you know COBOL, you are absolutely guaranteed a job there.

  3. Cool by bigsexyjoe · · Score: 4, Interesting

    Does that mean my Java skill set is likely to keep me employed for the next 30 to 40 years?

  4. Define "working well" by Just+Some+Guy · · Score: 5, Interesting

    Before I start, I know all too well that you can write good or terrible code in any language. Still, most COBOL code I've seen is written to run well on hardware that is no longer relevant. A recent experience with an ex-coworker illustrated this pretty well for me:

    Said fellow, call him "Joe", had about 30 years of COBOL experience. We're a Python shop but hired him based on his general coding abilities. The problem was that he wrote COBOL in every language he used, and the results were disastrous. He was used to optimizing for tiny RAM machines or tight resource allocations and did things like querying the database with a rather complex join for each record out of quite a few million. I stepped in to look at his code because it took about 4 hours to run and was slamming the database most of the time. I re-wrote part of it with a bit of caching and got the run-time down to 8 seconds. (Choose to believe me or not, but I'd testify to those numbers in court.) I gave it back to him, he made some modifications, and tried it again - 3 hours this time. I asked him what on Earth he'd done to re-break the program, and he'd pretty much stripped out my caching. Why? Because it used almost half a gig of RAM! on his desktop and he thought that was abhorrent.

    Never mind that it was going to be run on a server with 8GB of RAM, and that I'd much rather use .5GB for 8 seconds than 1MB for 3 hours of intense activity.

    So Joe isn't every COBOL programmer, but you and I both know that he's a lot of them. But back to the direct point, how much of that 250GLOC was written with the assumption that it'd be running on 512KB machines or with glacial hard drives or where making the executable as tiny as possible was an extreme priority? Doing things like storing cache data in hash tables would've been obscenely expensive back in the day, so those old algorithms were designed to be hyper-efficient and dog slow. Whether you think that constitutes "working well" is up to you.

    --
    Dewey, what part of this looks like authorities should be involved?
    1. Re:Define "working well" by thethibs · · Score: 5, Insightful

      Nice story, but it doesn't say anything about COBOL.

      I have a similar story about 30 programmers who spent two years writing java code and delivering nothing useful because the requirement called for two different architectures: one best served with a batch system, the other best served with a real-time system. What they need is COBOL and C, but what they know is java and struts. It's been another four years since I ran screaming from the building and they still haven't delivered anything useful.

      Inept programmers will screw things up in any language.

      --
      I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
    2. Re:Define "working well" by TheRaven64 · · Score: 5, Insightful

      You see that kind of thing from lots of programmers who only know one language well. This is why a good programmer always keeps up with modern architectures. I've seen C programmers who put things in globals rather than passing them on the stack, because that was faster before caching (now it breaks locality of reference, and moves something that was in a register or on the stack to an indirect reference where it needs extra loads and causes extra cache churn).

      I've seen programmers who grew up with Pascal carefully turning multiplies into sequences of adds and shifts. Great, except that something like the Athlon can do two multiplies in parallel, but only one shift at a time (because most code contains a lot more multiplies than shifts), stalling the pipeline.

      Another common issue is aggressively testing for potential special cases for optimising, ignoring the fact that branches are very expensive on most modern CPUs and the cost of the checks is now often greater than the saving from shortcutting the special cases.

      Java programmers are not immune to this, and often optimise based on old versions of the JVM. One favourite is to add finally everywhere, making the code very rigid, believing this makes it faster. In a modern JVM, finally is completely ignored; the VM already knows if a class is not subclassed and will do the same optimisations whether it is declared finally or not.

      There's a reason why the rules for optimisation are:

      1. Don't.
      2. Don't yet (experts only).

      If you write good algorithms, your compiler will usually produce reasonable code. If this isn't fast enough, then make sure you really understand how your VM and target CPU work, before you try optimising. The experts only part isn't a joke.

      --
      I am TheRaven on Soylent News
    3. Re:Define "working well" by Just+Some+Guy · · Score: 4, Interesting

      Nice story, but it doesn't say anything about COBOL.

      I think it says a lot about The COBOL Way, or at least the way things were done when those ancient codebases were being written.

      --
      Dewey, what part of this looks like authorities should be involved?
    4. Re:Define "working well" by TheRaven64 · · Score: 4, Informative

      I think you mean final here, no? finally does something else.

      Yes, sorry, final.

      And it increased flexibility, reduced complexity and code size, and vastly improved maintainability.

      Reducing code size is important for three reasons:

      1. It means that a single human can understand more of the program at a time.
      2. It means that there are fewer places to look for bugs.
      3. It reduces instruction cache usage.

      This last part is something I should probably have mentioned in the last post. Instruction cache churn is one of the biggest performance killers on modern CPUs. It is particularly instructive to compare C++ templates and Objective-C. In C++, your compiler will generate a new set of functions for every template instantiation (well, not quite, but close enough). In Objective-C, it will only emit one copy of a method and then use run-time lookups to determine how things work. The Objective-C solution to the problem is slower. You can generate lots of microbenchmarks that prove that it's slower. Except, somehow, the C++ program ends up being slower overall, because the Objective-C program can keep most of the code in cache, while the C++ program is constantly thrashing the instruction cache. If you run a couple of programs concurrently, each one gets even less cache usage, so you end up spending even more time waiting for main memory.

      This is almost a corollary to your comment: it isn't slow until you test it in place. On a modern computer there are so many potential sources of performance issues that you can't always take a microbenchmark and generalise it. There are lots of cases where one option is slower when you do it once but faster when you do it a few million times, or faster when you do other seemingly-independent things. Microoptimisations are no longer a good way of ensuring that an entire program runs quickly.

      --
      I am TheRaven on Soylent News
  5. Re:COBOL Jokes by larry+bagina · · Score: 4, Funny

    have you heard about object oriented cobol?

    It's called ADD 1 TO COBOL GIVING COBOLPLUSONE

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  6. Skill Sets are disappearing by 1c3mAn · · Score: 4, Insightful

    Why is no one updating Cobol code? Because the skill to interact with other systems is disappearing.

    As a Mainframe Utilities Programmer I hear it from customers all the time. "We can't touch that system because the guy who wrote it retired." System here just represent the code, but also the server backend stuff like database design.

    I have heard stories of an IT department being 10 man team. In the 80s that team had everyone dedicated in maintaining the mainframes. Now, they still have 10 people but only 1 person is there to work on the Mainframe.

    So now you have code from the 70s that no one understands, running a mission critical application, and you think the IT manager is going to touch it? He is praying it doesnt break on his watch or he might get a call from the COO. Even if it breaks, it is better to patch it then rewrite it because the database behind it is so vital to all the rest of the application that it cant be changed either.

    The issue mainly is that no one is teaching old skills anymore. Skills that are still required, but really arent 'sexy' for young college students to learn. Even the name "Mainframe" has grandfather connotation to it while if people actually looked at the IBM Z Servers, one would see how high tech these systems actually are.

  7. Re:2 jokes, 1 question by berend+botje · · Score: 4, Insightful

    When you have working code in COBOL, really battle-hardened proven-beyond-doubt COBOL code, would you really trust a mechanical translation into another language?

    I wouldn't, no way! And there is no way to completely test the new code either, as the specs never existed or at least are missing and/or outdated.

    I'd rather keep the working COBOL code. Even if that means I have to deal with grumpy old geezers to maintain said code.

  8. Does this add up? by Allicorn · · Score: 4, Insightful

    How does this add up?

    1. Around a third of UK companies say they have even at least one COBOL program somewhere in their enterprise.

    2. Around three quarters of all UK electronic business is coded in COBOL.

    I'm aware that there are allegedly pockets of COBOL here and there with some fairly significant nuclei of usage within certain business sectors but seriously... 80% of all electronic transactions?

    Monster.co.uk search for single keyword in title, 11th Apr 2009:

    Java: 173 hits
    C++: 142 hits
    PHP: 95 hits
    Perl: 39 hits
    COBOL: 1 hit

    This doesn't seem to suggest a great demand for COBOL coders at present which - one would think - suggests little use of COBOL.

    I've heard this "the world secretly runs on COBOL" story countless times over my career, but seldom seen more than a few lines of COBOL actually deployed in businesses I've worked with. Is the whole thing just a weird industry myth?

    --
    OMG!!! Ponies!!!
    1. Re:Does this add up? by PPH · · Score: 4, Interesting

      You are confusing the amount of development done with Cobol and the number of transactions handled by Cobol systems.

      In my experience, the reason that Cobol still hangs on is that management continues to pursue the philosophy of "patch it just one more time" rather than "port it to something more easily maintained". As time goes by and continual patching gets more difficult, expensive and riskier, the amount of development goes down. But the systems are still up and running.

      The ultimate in unmaintained systems was one at an outfit I used to work for where they lost the source code. Its gone, never to be modified again. It was lost before the end of the last century and was suspected not to be Y2K compliant. The solution was to write and run a routine on the applicable database to bump all of the date fields back (20 years, I think). Then, another small routine was written to post process the output add the time back. Management is grinning from ear to ear because, unlike all the other apps that cost millions to maintain, this one costs them nothing. As long as those responsible retire before 2020, that is.

      --
      Have gnu, will travel.
  9. None of you guys are getting it. by slashdot_commentator · · Score: 5, Insightful

    Its not just the mythical "mission critical" aspect that keeps businesses dependent on COBOL. MANY of those programs required either financial analysts to "vet" the COBOL program, or lawyers to "vet" the COBOL program complied with laws (privacy, methods of determinations, etc.).

    Not just are you putting in the cost to refactor the program from scratch, not just are you risking a bug costing your company hundreds of millions to billions of dollars, but you also have to take in the costs of expensive NON-programmers to "bless" the new program.

    Then also realize that the new whizbang technologies like SQL and java will RUN LIKE A DOG compared to the COBOL program. That's because mainframes are optimized data I/O machines. They're not great for making intense calculations or retrieving indexed relationships, but they are a BEAST when it comes to pulling out gigabytes of user data, and then making simple calculations and updates to each. It also sounds like top notch COBOL programmers programmed to the machine for efficiency. That's not really done anymore by generic programmers.

    New shops don't have to consider COBOL. But any large company (and gov't) could potentially take a huge hit on their finances (in legal issues) if refactor project has a bug. You can roll the dice, or you can just pay another couple million/year and hope nothing ever forces you to consider replacing your legacy COBOL programs that no one knows how they work, or how to change them.

    --
    There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
  10. The older generation isn't always wrong! by ErichTheRed · · Score: 5, Insightful

    I've had an interesting run through IT environments so far. Each one of my employers has successfully used what would be called a "legacy system" to do core business transactions. I'm not old by any means, but I definitely see no reason to get rid of systems that are performing well.

    The qualification for that statement, of course, is "performing well." The side effect to using older systems is all the bolt-ons you have to use to get newer functionality working. My current employer uses a midrange system from the early 80s to run the core of the operation, and it has tons of extra software and hardware riding on top of it to do modern things like access without terminal emulators and message queuing. The time to consider a replacement is when these systems become too unwieldy or brittle to manage. For example, if a transaction-processing system needs a daily FTP feed from some source, and it doesn't get it, will that blow up the whole system? If the answer is yes, it's time to fix the problem or replace the underlying system if it's bad enough.

    I'm very skeptical of anyone who comes in and says, barely looking at the existing system, that it needs to be ripped and replaced. A lot of it stems from the fact that IT hasn't matured all the way yet. People still come into the field knowing little more than the Java they were taught in school, and don't have the big-picture attitude you need to really understand IT. You may think I'm an old fart, but I'm really not. I've learned the basic rule of IT -- you're not there to play with computers and have fun. You're there to make sure the business you support is able to do their work, preferably without calling you in every night to fix something.

  11. Not a heroic life by QuestorTapes · · Score: 5, Interesting

    > I declined to take the elective COBOL classes.
    > I knew enough about COBOL then to know that I
    > could not drag myself out of bed in the morning
    > to make a living with it.

    COBOL also encourages "heroic" programming. At a shop I worked at, they were very disparaging of the new systems using relational databases, and proud of the mainframe COBOL stuff, because it never went down.

    If you don't count the 4 times in one year a hardware failure caused critical business systems to go offline for 2 days to 3 weeks at a time while teams of COBOL coders used tools to manually delete and rebuild tables and indexes when various failures caused -extensive data corruption-.

    And the corrupt data caused by operator errors in nightly batch processing.

    And the recoding to fix a major financials bug that went undetected for 10 years until we compared the numbers on the external PC system.

    You see, that was "normal operations." by contrast, when a network failure occurred and the relational systems we built went offline for 45 minutes, and data recovery was "re-run the job", -that- was a disaster caused by the "sloppy PC programmers and their tinkertoy PC systems."

    COBOL's great stuff...if you like being paged at all hours to manually fix data.