COBOL ?

Yes I know that it’s April 1 and no this is not an April fools joke. Believe it or not there are still organizations out there that use COBOL. Wikipedia defines COBOL as:

COBOL (pron.:/ˈkbɒl/) is one of the oldest programming languages, primarily designed by Grace Hopper. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments.

The language definition was re-written in 2002 to add features like object orientation which is common in more recent languages. COBOL was first defined in 1959 and has gone through a series of changes since that time. In 1968 the American National Standards Institute put its stamp on the language to create ANS COBOL. It revised the language in 1974 and again in 1985 creating versions that included the year of revision. The current version is an approved ISO standard (adopted as an ANSI standard by INCITS) and was made available in 2002.

The 2002 definition included the following features:

  • National Language support (including but not limited to Unicode support)
  • Locale-based processing
  • User-defined functions
  • CALL (and function) prototypes (for compile-time parameter checking)
  • Pointers and syntax for getting and freeing storage
  • Calling conventions to and from non-COBOL languages such as C
  • Support for execution within framework environments such as Microsoft’s .NET and Java (including COBOL instantiated as Enterprise JavaBeans)
  • Bit and Boolean support
  • “True” binary support (up until this enhancement, binary items were truncated based on the (base-10) specification within the Data Division)
  • Floating-point support
  • Standard (or portable) arithmetic results
  • XML generation and parsing

Gartner estimates about 180 billion lines. “By some estimates, the total value of the applications residing on mainframes today exceeds US$1 trillion. Most of that code was written over the past 40 years in COBOL.” itWorldCanada

The question that comes to my mind is “Who is going to maintain this code over the next 20 years?” when all the people who created it retire or are no longer with us. I did a quick search to see what COBOL compilers existed for my Mac and was surprised to find that there are a number of them. OpenCOBOL actually converts COBOL to C which is then compiled for the target platform. EditRocket also includes a COBOL editor, function navigator and function selector.

The ubiquitous IDE “Eclipse” has a COBOL plugin that adds to it already long list of plugins which includes C, C++, Java, Python and many others. You can see from the screenshot below that the COBOL plugin for Eclipse provides the usual Navigator and outline windows keeping the look and feel very similar to what Java and Python programmers are used to.

I personally like Eclipse and use it for all my  Java and Python development so I suspect it would be my IDE of choice should I find myself surrounded by COBOL. Turns out that this decision is only the first step because there are a number of COBOL development plugins for Eclipse. Elastic COBOL 11.12.1 promises enhanced debugging, cloud hosting and integration with other languages. Cobolclipse promises cross-referencing, version control integration and a spectacular editor, but you have to email them to find out more.

Just for fun I decided to install the eclipse marketplace where I found a free version of a COBOL development environment called Cobol Code by Sebastian Ritter. Unfortunately I couldn’t seem to get it to work so I went back to the eclipse marketplace and found isCOBOL by Veryant. Unfortunately this one needed a license and although I filled out the survey, I couldn’t figure out how to event get a demo license or how much it costs.

So I have outstanding emails with Sebastian and Cobolclipse. If I can get anyone to respond and get to evaluate their plugins, I’ll let you know.

This entry was posted in General and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *