Languages Part 2: COBOL Is 60...Wow

close-up-code-coding-160107 (1).jpg

60 Trips Around the Sun…

In some contexts, 60 years is not a long time. It could represent one-quarter of the time it took to build a medieval cathedral, or a quarter of a country’s existence. It used to be a long time when considering the lifespan of a human; scientific advances have changed this perception. However, 60 years is a long time for a marriage. Sixty years is a long time for a sports championship drought. And in today’s world where technological advances seem to be coming at us in time frames measured in months, anything still around and just plain getting the job done without complaint 60 years after its announcement is just, well, spectacular.

General-purpose computers have been around for more than 65 years. SHARE as an organization will turn 65 next year, spurred by the introduction of IBM models 701 and 704. Our beloved IBM System/360 architecture was announced 55 years ago. Yet IBM mainframes remain fresh and never stale. One of our counterpoints to “fear, uncertainty, and dread” (FUD) is that the mainframe continues to evolve; every two years there are new capabilities such as vector registers and the new Instant Recovery technology.


What’s this Dusty Tome?

COBOL is a technology that at times has seemed stale to some misguided analysts, but actually has a track record of improvement and resilience. The first standard for the COmmon Business-Oriented Language was approved and released by the Conference On Data Systems Languages (CODASYL) Committee in September 1959. The standard was mostly the brainchild of late computer icon Admiral Grace Hopper, USN. She felt that computer programs should be understood by non-programmers, as earlier languages were intended for mathematicians and scientists needs. As early as 1952, she spoke at conferences about her ideas that computer programs should be easily understood by all in the field, and she felt that the easiest way to do that was to get computers to understand the English language.

As an employee of Remington Rand, she contributed to the early language FLOW-MATIC, which had English-like syntax. Her work led to her appointment as a technical consultant to CODASYL, and as many committee members were former employees of hers, she was able to guide the results, published by the Department of Defense in January 1960. The COBOL 60 standard, Hopper said, was “95% FLOW-MATIC and 5% COMTRAN (IBM’s competitive language),” where English-like grammar described the logic and data definitions. (This also led to one of the most common complaints about COBOL: its wordiness.) Computer manufacturers developed compilers so that programs could theoretically run on their machines without changes. In August 1960, RCA demonstrated its compiler, and at the end of the year, portability (with minor changes) was demonstrated by RCA and Remington-Rand (Univac). In late 1962, IBM announced COBOL would replace COMTRAN as its strategic business language.

Like any emerging technology, COBOL went through growing pains. Intermediate updates were released in 1961, 1963, and 1965, mostly removing ambiguities in the original standard. In 1962, the American International Standards Institute (ANSI) took over publishing the standard, and in 1968 released what became the true foundation of the language. The International Standards Organization (ISO) approved COBOL-68 in 1972, and today publishes the standard. By 1970, COBOL was the top language used in the world.

CODASYL still was around, and published papers on how the language should be improved. ANSI took these ideas and in 1974 released a new standard, which became well known to those of us who learned and worked in the late 1970s and 1980s. Work continued, not without controversy; the original 1980 proposal was criticized as deviating too much from the 1974 version, and conversion costs would be significant. These inputs led to modifications, and in 1985 the next familiar standard was released. This was the version that 1990s and 2000s programmers recognize.

COBOL evolution then entered a quiet period. Work continued, including proposals for object-oriented (OO) features in the 1990s (to interface with C++, Smalltalk, and Java), and in 2002 the next standard, which also incorporated some CODASYL proposals from as far back as 1978, was released. However, this version was not well implemented by the major compiler writers; for example, although IBM implemented OO and hexadecimal constants, bit manipulations were not. (They were and still are available through Language Environment APIs.) This also was an era where IBM did not invest in the compiler, which became moribund in the 2000s and the first portion of the 2010s. As processors improved, complaints began to rise about poor performance. In spite of this, COBOL remained the top language used worldwide for execution, although it lost its top spot for new development.

The COBOL language continues to evolve. The latest standard was published in 2014; major highlights include the replacement of portable arithmetic with equivalent IEEE 754 standards, and some formerly mandatory sections (like report writer and screen handling) were made optional. (IBM has not provided report writer in decades, and has never implemented screen handling.) COBOL 2014 was the catalyst for IBM investment in the compiler; Enterprise COBOL V5.1 was released that year, with many improvements, including taking advantage of newer hardware architecture, and additions of new standard sections such as XML. Thanks to the continued reinvestment and the hard work of the compiler writers, including Tom “Captain COBOL” Ross, COBOL has become fresh again. Recent additions include JSON support, which demonstrates a quicker response to trends in the industry than previously. And, in what had been a rather poorly kept secret, Version 6.3 has been released, with even more improvements. ISO continues to work on the standard, and a new version will likely be published in the early 2020s.


What About Attitudes Towards COBOL?

I believe attitudes toward COBOL are changing, especially in industries where the mainframe still reigns supreme. One common thread in my recent personal discussions with younger developers is that in spite of the wordiness, COBOL programs are easier to understand, precisely because it is English-like. The code tells you exactly what it is doing, and the data definitions describe what the data looks like. Learning COBOL is not a cakewalk, but it’s not difficult, either. And once one learns the language, programmers find that it is extremely powerful, especially with features introduced in the recent compiler versions. One could conceivably write deeper systems-level code that previously would have required assembly language or C. (Please don’t, though.)

At an age where it’s eligible for early-bird dinners at Denny’s and got its AARP membership a while ago, COBOL remains flexible, easily handling today’s complex and modern data processing needs. Although it’s not a good language for front-end UIs and mobile (having only a character-oriented SCREEN SECTION in the standard), as a language powering the back-end it still rules the enterprise data center. As we celebrate the 60 years of COBOL over the next year plus, let’s take a moment and admire how something that has been around for so long can still get the job done. Let’s raise a toast (in the tradition of SCIDS) to COBOL. Cheers!

Recent Stories
IBM Z Champions Mentor and Build Community

Transforming Batch Resiliency through Greater Control Using Analytics and Automation

Rolling with the Tide: Flexibility in Mainframe Training