COBOL is a programming language. Its name is an acronym for COmmon Business Oriented Language.

COBOL was initially created in 1959 by The Short Range Committee, one of three committees proposed at a meeting held at the Pentagon in May 1959, organized by Charles Phillips of the United States Department of Defense. The Short Range Committee was formed to recommend a short range approach to a common business language. It was made up of members representing six computer manufacturers and three government agencies. In particular, the six computer manufacturers were Burroughs Corporation, IBM, Minneapolis-Honeywell, RCA, Sperry Rand, and Sylvania Electric Products. The three government agencies were the US Air Force, the David Taylor Model Basin, and the National Bureau of Standards. This committee was chaired by a member of the NBS. An Intermediate-Range Committee and a Long-Range Committee were proposed at the Pentagon meeting as well. However although the Intermediate Range Committeee was formed, it was never operational; and the Long-Range Committee was never even formed. In the end a sub-committee of the Short Range Committee developed the specifications of the COBOL language. This sub-committee was made up of six individuals:

  • William Selden and Gertrude Tierney of IBM.
  • Howard Bromberg and Howard Discount of RCA.
  • Vernon Reeves and Jean E. Sammet of Sylvania Electric Products.

This subcommittee completed the specifications for COBOL as the year of 1959 came to an end. The specifications were to a great extent inspired by the FLOW-MATIC language invented by Grace Hopper, and the IBM COMTRAN language invented by Bob Bemer.

The specifications were approved by the full Short Range Committee. From there, they were approved by the Executive Committee in January 1960, and sent to the government printing office, which edited and printed these specifications as Cobol 60. COBOL was developed within a six month period, and yet is still in use over 40 years later.

COBOL as defined in the original specification, possessed excellent self-documenting capabilities, good file handling methods, and exceptionally good data typing for the time, owing to its use of the PICTURE clause for detailed field specification. However by modern standards for programming language definition, it had serious flaws, notably verbose syntax and lack of support for local variables, recursion, dynamic memory allocation, and structured programming. Its lack of support for object-oriented programming is understandable, given that the concept was unknown at the time

COBOL has many reserved words, and it is hard to avoid unintentionally using one, without using some convention such as adding an unlikely prefix to all variable names. The original COBOL specification even supported self-modifying code via the famous "ALTER X TO PROCEED TO Y" statement. Consequently, little new code is being written in COBOL. However, the COBOL specification has been redefined over the years to address some of these criticisms. and later definitions of COBOL have remedied many of these lacks, adding improved control structures, object-orientation and removing the ability to use self-modifying code.

Many COBOL programs are still in use in major commercial enterprises, notably financial institutions. Some people think that the use of serial decimal arithmetic in its design happened to make programs designed without provision for the advent of the 2000s particularly vulnerable to failure with the year 2000 problem; however, it is difficult to see why they should have formed this opinion. It should be pointed out that COBOL's serial decimal arithmetic avoided many other problems that can occur with the naive use of floating point for financial calculations. Hence, many elderly COBOL programmers enjoyed several years of highly-paid work, often to fix the problems in systems they designed decades before.

Source: J.E. Sammet. "The Early History of Cobol." In History of Programming Languages, edited by R.L. Wexelblat. New York: ACM Monograph Series,1981.


Code Sample (Hello World)

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.     HELLOWORLD.
000300 DATE-WRITTEN.   02/05/96        21:04.
000400*       AUTHOR    BRIAN COLLINS
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400     DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500     DISPLAY "HELLO, WORLD." LINE 15 POSITION 10.
100600     STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800     EXIT.

ADD 1 TO COBOL GIVING COBOL is the punchline of a joke about computer programming languages. If Bjarne Stroustrup can come up with the object-oriented C++ by taking C and adding C's postfix increment operator, then an object-oriented COBOL should be called "ADD 1 TO COBOL GIVING COBOL", which is that language's verbose method of incrementing a value.


For other vintage programming languages see