The authors and copyright holders of the copyrighted material used herein are as follows: They have specifically authorized the use of this material, in whole or in part, in the COBOL specifications. COBOL-85 then added nested subprograms, allowing programmers to hide subprograms. [43] COBOL's data structures influenced subsequent programming languages. In a published dissent to Dijkstra's remarks, the computer scientist Howard E. Tompkins claimed that unstructured COBOL tended to be "written by programmers that have never had the benefit of structured COBOL taught well", arguing that the issue was primarily one of training. However, by 2001, around 300 dialects had been created. Nevertheless, much important legacy COBOL software uses unstructured code, which has become unmaintainable. The standardization process was also found to be slow and under-resourced. It was impossible to restrict access to data, meaning a procedure could access and modify any data item. Another complication stemmed from the ability to PERFORM THRU a specified sequence of procedures. Comments are specified using *>, which can be placed anywhere and can also be used in fixed-format source code. GO TO causes the program to jump to a specified procedure. [147], The original (1959) COBOL specification supported the infamous  ALTER X TO PROCEED TO Y  statement, for which many compilers generated self-modifying code. [67] If a subroutine is invoked using a simple statement like PERFORM subroutine, then control returns at the end of the called procedure. [13], On 8 April 1959, Mary K. Hawes, a computer scientist at Burroughs Corporation, called a meeting of representatives from academia, computer users, and manufacturers at the University of Pennsylvania to organize a formal meeting on common business languages. The sections and paragraphs in the procedure division (collectively called procedures) can be used as labels and as simple subroutines. 'What kind of name is that?' [29], The committee mainly examined the FLOW-MATIC, AIMACO and COMTRAN programming languages. A majority agreed that the language should make maximal use of English, be capable of change, be machine-independent and be easy to use, even at the expense of power. _ [75], In 1997, Gartner Group estimated that there were a total of 200 billion lines of COBOL in existence, which ran 80% of all business programs. COBOL was used for solving business and financial problems etc. [21][30] [49] Little consideration was given to interactivity, interaction with operating systems (few existed at that time) and functions (thought of as purely mathematical and of no use in data processing). Execution goes down through the procedures of a program until it is terminated. A sub-committee was formed to analyze existing languages and was made up of six individuals:[21][63], The sub-committee did most of the work creating the specification, leaving the short-range committee to review and modify their work before producing the finished specification. Efforts to rewrite systems in newer languages have proven expensive and problematic, as has the outsourcing of code maintenance, thus proposals to train more people in COBOL are advocated. [25] FLOW-MATIC's major contributions to COBOL were long variable names, English words for commands and the separation of data descriptions and instructions. In the late 1950s, computer users and manufacturers were becoming concerned about the rising cost of programming. Each COBOL program is made up of four basic lexical items: words, literals, picture character-strings (see § PICTURE clause) and separators. Fewer than a dozen of the responses were in favor of the proposed standard.[89]. The same poll also found that only 25% of academics had COBOL programming on their curriculum even though 60% thought they should teach it. It was attended by 41 people and was chaired by Phillips. After the clean-up effort put into these programs for Y2K, a 2003 survey found that many remained in use. RCA representative Howard Bromberg also blocked FACT, so that RCA's work on a COBOL implementation would not go to waste. There are two ways of calling a method: the INVOKE statement, which acts similarly to CALL, or through inline method invocation, which is analogous to using functions. Implementations of indexed files vary between vendors, although common implementations, such as C‑ISAM and VSAM, are based on IBM's ISAM. It is imperative, procedural and, since 2002, object-oriented. [132], A PICTURE (or PIC) clause is a string of characters, each of which represents a portion of the data item and what it may contain. [118], COBOL 2002 also introduced free-format code. [9], COBOL was designed in 1959 by CODASYL and was partly based on the programming language FLOW-MATIC designed by Grace Hopper. A 1962 US Navy evaluation found compilation speeds of 3–11 statements per minute. COBOL (Common Business Oriented Language) was invented by a Committee which consists of six members William Selden, Gertrude Tierney, Howard Bromberg, Howard Discount, Vernon Reeves, and Jean E. Sammet under the guidance of “Grace Hopper” in 1959. Other responses were detailed analyses of the effect COBOL-80 would have on their systems; conversion costs were predicted to be at least 50 cents per line of code. The second PERFORM statement sets the return at the end of LABEL4 but does not modify the continuation address of LABEL3, expecting it to be the default continuation. [58] A 1959 survey had found that in any data processing installation, the programming cost US$800,000 on average and that translating programs to run on new hardware would cost $600,000. The listing below, with an empty DATA DIVISION, was tested using GNU/Linux and the System/370 Hercules emulator running MVS 3.8J. In 1959, a group of programmers devised COBOL, a COmmon, Business-Oriented Language. [154] GO TOs were largely replaced by the PERFORM statement and procedures, which promoted modular programming[154] and gave easy access to powerful looping facilities. [75], In June 1978, work began on revising COBOL-74. Edsger Dijkstra, a preeminent computer scientist, wrote a letter to the editor of Communications of the ACM, published 1975 entitled "How do we tell truths that might hurt? On 6 and 7 December, the same COBOL program (albeit with minor changes) ran on an RCA computer and a Remington-Rand Univac computer, demonstrating that compatibility could be achieved.[68]. When the – now famous – "Hello, World!" The following example (taken from Veerman & Verhoeven 2006) illustrates the problem: One might expect that the output of this program would be "1 2 3 4 3": After displaying "2", the second PERFORM causes "3" and "4" to be displayed, and then the first invocation continues on with "3". Reports work around hierarchical control breaks.