No Apologies for COBOL
Jerome Garfunkel


         COBOL supporters spend a lot of time apologizing and defending it.    COBOL  is thought of by some as "stodgy old COBOL"  lacking modern structured features such as local variables, callable procedures, and other standard structured programming facilities."  For sure the COBOL 85 language needs no apologies.  COBOL 85 is indeed a state-of-the-art programming language incorporating all important structured programming constructs.  Further, the COBOL 85 language is currently being revised to include other features to make it useful for Object Orientation.  Let me explain.

         The fact is COBOL 85 does include both  local and global variables.  COBOL 85 also includes callable procedures - both by reference (with pointers to updatable data items) and by content (with original data protection).   Many other features in  the COBOL 85 language facilitate structured programming techniques.  These are some of the more important features:

The EVALUATE verb offers COBOL programmers a true multi-join, multi-branch case statement.

Nested programs allow GLOBAL and local data items and procedures.

In-line PERFORM statements allow program functions and procedures to be coded in-line rather than having to be written in a separate paragraph or section far from the place it is used.

Do-while and Do-until logic can be coded with the PERFORM statement (using the clauses WITH TEST AFTER or WITH TEST BEFORE).

Scope terminators (19 to be exact) are defined for every COBOL statement that contains a conditional clause such as:        

                ADD . . .

                                    ON SIZE ERROR. . .


Structured conditional phrases allow the explicit coding of both the true and the false path such as

      READ. . .

                           AT END. . .

                           NOT AT END. . .


External Files are available to all programs in a Run unit.

Programs (and of course sub-programs) can be INITIALized when loaded (at run time) to assure "fresh" copies of the program.

Data items can be INITIALIZEd in one "fell-swoop" resetting all numeric data items to zero (or some other specified value) and all non-numeric data items to spaces (or some other specified value).


         These are just some of the features in COBOL 85 that facilitate structured programming.  The COBOL language which was revised in 1985 to incorporated these new features is the current American National Standard COBOL;  it is the direct result of a symposium  held by the CODASYL COBOL Committee in 1975 on COBOL Structured Programming.  At that time, many leading software engineers from around the world were invited to submit suggestions on how to incorporate structured techniques into the COBOL language.  Nearly all of the suggestions offered at that time eventually found their way into the COBOL 85 language. *

         Recently, the COBOL language passed a similar evolutionary milestone.  Late last year, the CODASYL COBOL Committee held a meeting in Scottsdale Arizona expressly for the purpose of soliciting suggestions on how to make the COBOL language Object Oriented.  Software engineers from around the world again were invited and  vigorous discussions for two days resulted in a unanimous decision to create a COBOL task group specifically for incorporating Object Oriented syntax and semantics into the COBOL language.  One of the interesting observations from that conference was that COBOL already contains many features that facilitate Object Oriented programming.  What  the conference attendees did was to identify some of the features that would make it even easier to use COBOL for creating "objects,"  vis-a-vis Smalltalk, Eifle, C++,  COBOL ++, etc., and to set priorities on how to accomplish this task.

         There's nothing "old" or  "stodgy" about COBOL  that I can tell.

*    For a further discussion on all new and changed features of the COBOL 85 language, readers are invited to read my book,
The COBOL 85 Example Book, published by John Wiley and Sons. 

      Additional material on the Codasyl symposium can be found in
"Proceedings of a Symposium on Structured Programming in COBOL - Future and Present,"
edited by Henry P. Stevensen, and published by ACM.


Jerome Garfunkel is a member (current and former) of the following

computer languages committees:

The American COBOL Committee (ANSI X3J4)

The International COBOL Committee  (ISO TC97/SC22/WG4)


      The Standards Planning And Requirements Committee (ANSI X3/SPARC)

The Programming Languages Study Group (ANSI X3/PLSG)

The International Committee on Programming Language Guidelines      (ISO TC97/SC22/WG10)

Jerome Garfunkel has authored:

        "The COBOL 85 Example Book" (J. Wiley & Sons)

        "COBOL 80 Guide" (JGA)

        "COBOL Workshop Book" (JGA)

        Numerous articles in the American and International Data Processing and Academic Press

Jerome Garfunkel is currently Senior Consultant for Micro Focus, the leading maker of COBOL compilers and tools for the mainframe and micro programming community.