COBOL: Everywhere and Nowhere

I bought a book on COBOL 2002 and I couldn’t understand shit of it.

I’m 56 years old. I write desktop applications for Windows and lately for the Mac also using Flash.

My dad was a COBOL programmer.

Do the math.

My employer (a major health insurance company) has three different programming camps: COBOL, Java, and .Net. The COBOL coders keep churning out new code and that code works through millions of claims per day. The company lists a couple of COBOL positions per year.

I learned COBOL in school on an AS/400… I hated the class hated the language but after working in the field for a few years with all these new wiz bang languages that they keep churning out to make programming easier… I have a new found appreciation for COBOL and the AS/400 that I didn’t have at the time. It’s reliable with COBOL 1+1 = 2 always always always always… these new easier to program languages 1+1 might equal 2 or your web server might go down.

How often do you actually get to go back and re-factor, re-write something?? lets face it more often than not… unless you can convince your manager or tie some real dollars and cents to it, it’s not going to happen. The most likely scenario you write some quick and dirty code that you know is dirty… but it gets the job done… you deploy it forget about it and when you’re ready to re-write it… management has changed, the company has changed focus and you end up scraping it anyways.

I removed COBOL from my resume so I wouldn’t get stuck working in it again. I bet you have met many COBOL programmers but just don’t know it. Most don’t advertise it.

And if you are interested in seeing if there are any jobs for COBOL just put it on your Monster or Dice profile (resume) and see what happens.

COBOL does not create “bug free” code but if the code compiles you can be pretty sure of what it does by reading it. The environment it tends to run in, the mainframe, also tends to encourage correctness in the implementation of code. The compilers are rock solid as is the library code.

Once you “get it right” it does not need to be changed and things are very well defined. You just don’t get that in “modern” systems.

Ada is hardly a dead language, just the same as COBOL (although, obviously, COBOL is far, far more in use).

The verbose programming languages have a distinct advantage in that the notion of self-documenting code is almost a reality with them. COBOL is used almost everywhere in the DP world, and Ada is the primary military language throughout the Western world. Also any other mission-critical real-time system will be using Ada.

But why think of it like that? Is C going away? Is assembler? There are some languages that will forever stay around. I daresay that in Y3K some form of BASIC will still exist…

COBOL is still around on mainframe systems. IBM and other businesses are scrambling to train new COBOL programmers, because too many “modernization” efforts have failed. Few non-mainframe databases can handle hundreds of terabytes of information.

Training press release:

@Jim Howard: The only result of that math is that you chose not to do what your dad did.

We, just last week, made a pretty funny YouTube video on Agile COBOL 2009:

Jeff might pick up some pointers on agile development at the same time!

Assuming I started learning COBOL now, How would I know when I was prepared for a job writing COBOL? and how would I convince anyone else?

Firstly let me be clear my entire 15 year career has predominately been in Microsoft technologies BUT the reality is …

  1. COBOL is everywhere!
  2. The entire financial services industry (at least insurance and retail banking) run on it - Yes they are green screen!
  3. It’s incredibly difficult to recruit good COBOL designers or developers in the UK
  4. It’s easy to recruit good COBOL designers or developers in India
  5. The investment that would be required to rewrite has no business case when requirements or application driven
  6. It will only start being decomissioned once the cost / upgrade path of the infrastructure becomes too difficult to maintain
  7. There are many advantages to the technology that cannot be expressed with an example of language syntax
  8. Systems referenced in the comments almost account for the 220bn lines!

Like others here I took Cobol in college and it was a nightmarish experience. My prof. was completely incompetent so it was very challenging to learn anything from her. The programs were just so VERBOSE that I had a hell of a time breaking things down to a level of familiarity and comfort that I had with C++. I actually had a much easier time picking up more compact languages like C/C++ and Lisp, go figure.
Also, about that 220 billion lines of code figure I can guarantee that if that code was rewritten in C the line count would go to 220 million lines of code easy if not smaller. Using an automated translator like Mecki suggested is an excellent idea to rid the world of this verbosely written scourge.

No. Cobol – despite our best attempts – still lives on.

If you want to talk about dead languages, talk about Ada. There main development webpage hasn’t been updated in two years:

Steven Howes,
University of New Brunswick? I took a COBOL course there in 99.

I got a job right after graduating as a mainframe COBOL programmer for a large financial processing company - 3 years ago. I like it.

Those heaping scorn on COBOL as a stupid language merely display their ignorance of why and how it was designed. As someone else commented, “the B stands for Business”; it was designed for use in Business systems, with maintainability a major concern. Truism: no matter how elegant the code is, if you can’t read it you can’t modify it. Those ‘extra’ lines of code cost a (little) bit more to write in the first place, but they pay for themselves many times over as they help later programmers understand the design.

I started with Algol and Fortran, naturally despising COBOL as a language for dummies. Then I took a job managing a corporate COBOL shop. What I soon learned was that the structure of COBOL, in particular the rigidity of the DATA DIVISION, made it the easiest language there is in which to modify someone else’s code.

Flexibility and rapid re-structuring are important for web sites, in the production and financial sectors you’ll trade those any day for stability.

Dan Covill
San Diego

I actually started my programming career 5 years ago doing COBOL. I agree it is a huge challenge to get young developers into the language and about the only way is with promises of getting to work with newer languages. ( For me I got to work with Java after I was able to support our COBOL system. )

I’d say there was about 25 programmers supporting the application I worked on and most of the work was done performing firefighting on the existing code. I often wondered why there was no push to rewrite the system especially when processing of records was taking almost 2 days. If anything terrible happened there might be a need to restart the COBOL program from the start.

I think most COBOL is still around because as far as a business goes “it still works” even if it could be rewritten in a year or two and 20 COBOL programmers can be sent searching for jobs elsewhere.

I work for one of the largest companies in the world and there are tons and tons of COBOL programmers here. I fortunantly get to work with C# and Java for the most part, but COBOL is alive and well here. Tons and tons of new COBOL programs are being written daily.

If you haven’t met met anyone who was writing COBOL (yet), just visit Elbonia: