COBOL

From Wikipedia, the free encyclopedia - View original article

COBOL
Paradigm(s)procedural, imperative, object-oriented
Designed byGrace Hopper, William Selden, Gertrude Tierney, Howard Bromberg, Howard Discount, Vernon Reeves, Jean E. Sammet
Appeared in1959 (1959)
Stable releaseISO/IEC 1989:2002 / 2002
Typing disciplinestrong, static
Major implementationsGNU Cobol, Micro Focus International (e.g. the Eclipse-plug-in Micro Focus Net Express)
DialectsHP3000 COBOL/II, COBOL/2, IBM OS/VS COBOL, IBM COBOL/II, IBM COBOL SAA, IBM Enterprise COBOL, IBM COBOL/400, IBM ILE COBOL, Unix COBOL X/Open, Micro Focus COBOL, Microsoft COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, DOSVS COBOL, UNIVAC COBOL, Realia COBOL, Fujitsu COBOL, ICL COBOL, ACUCOBOL-GT, isCOBOL, COBOL-IT, DEC COBOL-10, DEC VAX COBOL, Wang VS COBOL, Visual COBOL, Tandem (NonStop) COBOL85, Tandem (NonStop) SCOBOL
Influenced byFLOW-MATIC, COMTRAN, AIMACO, FACT
InfluencedPL/I, CobolScript, ABAP
 
Jump to: navigation, search
COBOL
Paradigm(s)procedural, imperative, object-oriented
Designed byGrace Hopper, William Selden, Gertrude Tierney, Howard Bromberg, Howard Discount, Vernon Reeves, Jean E. Sammet
Appeared in1959 (1959)
Stable releaseISO/IEC 1989:2002 / 2002
Typing disciplinestrong, static
Major implementationsGNU Cobol, Micro Focus International (e.g. the Eclipse-plug-in Micro Focus Net Express)
DialectsHP3000 COBOL/II, COBOL/2, IBM OS/VS COBOL, IBM COBOL/II, IBM COBOL SAA, IBM Enterprise COBOL, IBM COBOL/400, IBM ILE COBOL, Unix COBOL X/Open, Micro Focus COBOL, Microsoft COBOL, Ryan McFarland RM/COBOL, Ryan McFarland RM/COBOL-85, DOSVS COBOL, UNIVAC COBOL, Realia COBOL, Fujitsu COBOL, ICL COBOL, ACUCOBOL-GT, isCOBOL, COBOL-IT, DEC COBOL-10, DEC VAX COBOL, Wang VS COBOL, Visual COBOL, Tandem (NonStop) COBOL85, Tandem (NonStop) SCOBOL
Influenced byFLOW-MATIC, COMTRAN, AIMACO, FACT
InfluencedPL/I, CobolScript, ABAP

COBOL (/ˈkbɒl/) is a compiled computer programming language designed for business. It is imperative, procedural and, since 2002, object-oriented. It was designed in 1959 by the Conference on Data Systems Languages (CODASYL) and was largely based on previous programming language design work by Grace Hopper. COBOL stands for COmmon Business-Oriented Language.

COBOL is primarily used in business, finance, and administrative systems for companies and governments. 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.[1]

COBOL was one of the first programming languages to be standardised: the first COBOL standard was issued by ANSI in 1968. The standard has been revised three times since then, with ISO publishing the latest standard as ISO/IEC 1989:2002.

History and specification[edit]

COBOL 60[edit]

A meeting chaired by Charles A. Phillips, director of the Data System Research Staff, was held at the Pentagon on May 28 and 29 of 1959 (exactly one year after the Zürich ALGOL 58 meeting) to discuss creating a common programming language for business. The Deparment of Defense was concerned about whether it could run the same data processing programs on different computers, a task which the only mainstream language, FORTRAN, could not handle. There, it was agreed to start a project to create a common, business-oriented language.[2]

The language's objectives were to allow efficient, portable programs to be easily written, to allow users to move to new systems with minimal effort and cost, and to be suitable for inexperienced programmers. It was decided to set up three committees: short, intermediate and long range. However, in the end, the short term committee designed the language because the intermediate range committee formed, but never became operational, and the long range committee never formed. The committees eventually merged to form CODASYL.[3](I.1.1)

It was the Short Range Committee, chaired by Joseph Wegstein of the US National Bureau of Standards, that created a description of the first version of COBOL in the following months.[4] The committee was formed to develop a language which would take the best parts of FLOW-MATIC, AIMACO, and COMTRAN while being superior to them all.[3](I.1.2) The committee worked under the assumption that they would be creating a stopgap which would be replaced.[5]:ID/9

The specifications were greatly inspired by the FLOW-MATIC language invented by Grace Hopper,[6]:10–11[7] commonly referred to as "the mother of the COBOL language."[8][9] FLOW-MATIC's status as the only language of the bunch to have been implemented made it particularly attractive to the committee.[10] The IBM COMTRAN language invented by Bob Bemer was also drawn upon, but some of its features were not incorporated into COBOL so that it did not look like IBM had dominated the design process.[5]:ID/9 The FACT language specification from Honeywell was not distributed to committee members until late in the process and had little impact.[10]

The committee was made up of members representing six computer manufacturers and three government agencies. The six computer manufacturers were Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Rand, and Sylvania Electric Products. The three government agencies were the US Air Force, the Navy's David Taylor Model Basin, and the National Bureau of Standards (now National Institute of Standards and Technology).[3](I.2.1.1) It soon became apparent that the committe was too large for any progress to be made quickly. A sub-committe was formed and was made up of six individuals:[2][11]

The decision to use the name "COBOL" was made at a meeting of the committee held on 18 September 1959.[citation needed] The subcommittee completed the specifications for COBOL in December 1959.[3](I.2.1)

The specifications approved by the full Short Range Committee were approved by the Executive Committee on January 3, 1960, and sent to the government printing office, which printed these as COBOL 60. The CODASYL Executive Committee later created the COBOL Maintenance Committee to answer questions from users and vendors and to improve and expand the specifications.[12]:47

The first compilers for COBOL were implemented later that year, and on December 6 and 7, the same COBOL program ran on an RCA computer and a Remington-Rand Univac computer, demonstrating that compatibility could be achieved.[7]

COBOL-61 to COBOL-65[edit]

COBOL 60 was replaced in 1961 by COBOL-61. This was then replaced by the COBOL-61 Extended specifications in 1963 which introduced the sort and report writer facilities.[12]:48 COBOL, Edition 1965 brought further clarifications to the specifications and introduced facilities for handling mass storage files and tables.[3](I.2.2.4)

ANS COBOL 1968[edit]

Efforts began to standardise COBOL to overcome incompatibilities between versions. In late 1962, both ISO and the United States of America Standards Institute (now ANSI) formed groups to create standards. ANSI produced USA Standard COBOL X3.23 in August 1968 which became the cornerstone for further versions.[3](I.2.3) This version was known as American National Standard (ANS) COBOL.

COBOL 1974[edit]

In 1974, ANSI published a revised version of (ANS) COBOL, containing new features such as file organizations, the DELETE statement[13] and the segmentation module.[14] Deleted features included the NOTE statement, the EXAMINE statement (which was replaced by INSPECT) and the implementer-defined random access module (which was superseded by the new sequential and relative I/O modules). These made up 44 changes which rendered existing statements incompatible with the new standard.[15]

The report writer was slated to be removed from COBOL, but was reinstated before the standard was published.[16][17]

COBOL 1985[edit]

In June 1978, work began on revising COBOL-74. The proposed standard (commonly called COBOL-80) differed significantly from the previous one, causing concerns about incompatibility and conversion costs. In January 1981, Joseph T. Brophy, Senior Vice-President of Travelers Insurance, threatened to sue the standard committee in January 1981 because it was not upwards compatible with COBOL-74. Mr. Brophy described previous conversions of their 40 million line code base as "non-productive" and a "complete waste of our programmer resources".[18] Later that year, the Data Processing Management Association (DPMA) said it was "strongly opposed" to the new standard, citing "prohibitive" conversion costs and enhancements that were "forced on the user".[19][20]

During the first public review period, the committee received 2,200 responses, of which 1,700 were negative form letters.[21] 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. Fewer than a dozen of the responses were in favor of the proposed standard.[22]

In 1983, the DPMA withdrew its opposition to the standard, citing the responsiveness of the committee to public concerns, and a National Bureau of Standards study concluded that the proposed standard would present few problems.[20]:41

In late 1984, a COBOL-80 compiler was released to DEC VAX users, who noted that conversion from COBOL-74 programs posed few problems. The new EVALUATE statement and inline PERFORM were particularly well received and improved productivity, thanks to simplified control flow and debugging.[23]

The second public review drew another 1,000 (mainly negative) responses, while the last drew just 25, by which time many concerns had been addressed.[20]

In late 1985, ANSI published the revised standard. 60 features were changed or deprecated and many[quantify] were added, such as:[4]:150[24]

Two amendments followed in 1989 and 1993, the first introducing intrinsic functions and the other providing corrections. The 1985 standard and its amendments were adopted by ISO who subsequently took primary ownership and development of the standard.

COBOL 2002 and object-oriented COBOL[edit]

In the early 1990s it was decided to add object-orientation in the next full revision of COBOL. Object-orientated features were taken from C++ and Smalltalk.[25][26] The initial estimate was to have this revision completed by 1997 and an ISO Committee Draft (CD) was available by 1997. Some vendors (including Micro Focus, Fujitsu, Veryant, and IBM) introduced object-oriented syntax based on drafts of the full revision. The final approved ISO standard (adopted as an ANSI standard by INCITS) was approved and made available in 2002.

Fujitsu/GTSoftware,[27] Micro Focus and RainCode introduced object-oriented COBOL compilers targeting the .NET Framework.

COBOL 2002 included many other features beyond object-orientation. These included:

Three corringenda have been published for the standard, two in 2006 and one in 2009. There are three technical reports which describe object finalization, XML processing and collection classes for COBOL.[29]

COBOL 20XX[edit]

The standard to supersede COBOL 2002 is under publication as of 2014.[30] It includes the following changes:[31](Annex E)

Legacy[edit]

COBOL programs are used globally in governments and businesses, and are running on diverse operating systems such as z/OS, VME, Unix and Windows. In 1997, the Gartner Group reported that 80% of the world's business ran on COBOL with over 200 billion lines of code and 5 billion lines more being written annually.[32]

Near the end of the twentieth century, the year 2000 problem (Y2K) was the focus of significant COBOL programming effort, sometimes by the same programmers who had designed the systems decades before. The particular level of effort required to fix COBOL code has been attributed[by whom?] to the large amount of business-oriented COBOL, as business applications use dates heavily, and to fixed-length data fields. After the clean-up effort put into these programs for Y2K, a 2003 survey found that many remained in use.[33]:16 The authors said that the survey data suggest "a gradual decline in the importance of Cobol in application development over the [following] 10 years unless ... integration with other languages and technologies can be adopted".[33]:10

In 2006 and 2012, Computerworld surveys found that over 60% of organisations used COBOL (more than C++ and Visual Basic .NET) and that for half of those, COBOL was used for the majority of their internal software.[34][35] 36% of managers said they planned to migrate from COBOL and 25% said they would like to if it was cheaper. Instead, some businesses have migrated their systems from expensive mainframes to cheaper, more modern systems, while maintaining their COBOL programs.[34]

Features[edit]

Syntax[edit]

COBOL has an English-like syntax which is used to describe nearly everything in a program. For example, a condition can be expressed as  x IS GREATER THAN y, although there are more concise forms such as  x GREATER y  and  x > y. More complex conditions can be shortened from  a > b AND a > c OR a = d  to a > b AND c OR = d.

COBOL has over 300 reserved words,[31](8.9) called keywords. However, compiler extensions mean many implementations have far more; one implementation recognizes over 1,100 keywords.[36]

A COBOL program is split into 4 divisions: the identification division, the environment division, the data division and the procedure division. The environment division specifies any program features that depend on the system running it, such as files and character sets. The data division is used to declare variables and parameters. The procedure division contains the program's statements. Each division sub-divided into sections which are made up of paragraphs.

COBOL provides "named conditions" (so-called 88-levels). These are subordinate data items which are used to test whether the parent variable equals any of the values given in the named condition's VALUE clause. The SET statement can be used to make a named condition TRUE (by assigning the first of its values to the conditional variable).

COBOL allows identifiers up to 30 characters long. When COBOL was introduced, much shorter name lengths (e.g., 6 characters for FORTRAN) were prevalent.

COBOL introduced the concept of copybooks—chunks of code that can be inserted into a larger program. Copybooks are used with the COPY statement, which allows code to be selectively replaced (using the REPLACING ... BY ... clause). For instance COPY foo REPLACING bar BY baz will replace all instances of "bar" with "baz".

Code format[edit]

Fixed format code is the default code format. Up to COBOL-85, fixed-format code was split into 5 areas:

NameColumn(s)Usage
Sequence number area1–6Originally used for card/line numbers, this area was ignored by the compiler.
Indicator area7The following characters could go here:
  • * – a comment line
  • / – a comment line which would be printed on a new page of a source listing
  • - – a continuation line where words from the previous line could be continued
  • D – a line used for debugging, which would otherwise be ignored
Area A8–11The following had to begin here: DIVISION, SECTION and procedure headers, 01 and 77 level numbers and FD and SD record descriptors.
Area B12–72Any other code not allowed in Area A.
Program name area73–Historically up to column 80 for punched cards, it was used to identify the program the card belonged to.

In COBOL 2002, free-format code was introduced. It allowed code to be placed in any column of the file, like newer languages such as C and Pascal. The * comment indicator was replaced by *> which could be placed anywhere and be used in fixed-format source code. However, no equivalent to the / was introduced and continuation is now only allowed for string literals. Fixed-format code remains the default format, however, and the only changes to it in COBOL 2002 were that Areas A and B were merged and their size left to the implementer.[37](1.6)

Aggregated Data[edit]

Data items in COBOL are declared hierarchically through the use of level-numbers which indicate if a data item is part of another. An item with a higher level-number is subordinate to an item with a lower one. Data items which are not subordinate to another item are called records. Items that have no subordinate data items are called elementary items; those that do are called group items.[37](5.2)

        01  some-record.            03  num            PIC 9(10).            03  the-date.                05  the-year   PIC 9(4).                05  the-month  PIC 99.                05  the-day    PIC 99. 

In the above example, num and the-date are subordinate to the record some-record while the-year, the-month and the-day are part of the group item the-date.

Level-numbers used to describe standard data items are between 1 and 49. A level-number of 66 is used to declare a re-grouping of previously defined items, irrespective of how those items are structured.[38] 77 indicates the item is stand-alone and in such situations, is equivalent to the level-number 1. 88 declares a condition name.[6]:40–41

Data types[edit]

Standard COBOL provides the following data types:[31]:118

Data typeSample declarationNotes
AlphabeticPIC A(30)May only contain letters or spaces
AlphanumericPIC X(30)May contain any characters
BooleanPIC 1 USAGE BITData stored in the form of 0s and 1s, as a binary number
IndexUSAGE INDEXUsed to reference table elements
NationalPIC N(30)Similar to alphanumeric, but using an extended character set, e.g. UTF-8
NumericPIC 9(5)V9(5)May contain only numbers
ObjectUSAGE OBJECT REFERENCEMay reference either an object or be NULL
PointerUSAGE POINTER

Numeric[edit]

Numeric data can be stored in several formats:[31](13.18.59.3)

Edited[edit]

Edited data are formatted string types that are specified by a PICTURE clause. For example, a 9 indicates that there will be a numeric character at a position and a , indicates that there will be a comma character at that position unless the character after it is a space, in which case it will also be a space.[37]:5-11 There are 3 types of edited data: alphanumeric-edited, national-edited and numeric-edited. Numeric-edited data can be represented using either the normal character set or the NATIONAL set.

Extensions[edit]

Most vendors provide additional types, equivalents of which are now in the standard. These extensions include:[37](5.2.1.11)[39]

Data typeSample declarationNotes
Single-precision floating-pointUSAGE COMPUTATIONAL-1Equivalent to USAGE FLOAT-SHORT.
Double-precision floating-pointUSAGE COMPUTATIONAL-2Equivalent to USAGE FLOAT-LONG.
Signed packed decimalPIC S9V999 USAGE COMPUTATIONAL-3Equivalent to USAGE PACKED-DECIMAL.
Fixed-point binaryPIC S999V99 USAGE COMPUTATIONAL-4Equivalent to USAGE BINARY.
Fixed-point native binaryPIC S9(5) USAGE COMPUTATIONAL-5May be signed or unsigned. The PICTURE clause does not directly state the size of the variable which can either have 16, 32 or 64 bits. For example, the example specifies that it will have a maximum value of 2147483647 instead of 99999.
Unsigned packed decimalPIC 99V999 USAGE COMPUTATIONAL-6
Double-byte charactersPIC G(20)Equivalent to alphanumeric data, but using a double-byte character set.

Procedures[edit]

The sections and paragraphs in the procedure division can be used as labels and simple subroutines. Unlike in other divisions, paragraphs do not need to be in sections. Execution goes down through the procedures of a program until it is terminated. Paragraphs are declared with an identifier followed by a period and sections are declared similarly, with the word SECTION following the identifier.

Procedures can be used with the PERFORM statement which acts like a GOSUB in BASIC. Performing a section means that execution travels through any paragraphs it contains, even if doing so will take control flow out of the specified procedures.

Self-modifying code[edit]

The original COBOL specification supported the infamous "ALTER X TO PROCEED TO Y" statement, for which many compilers generated self-modifying code. X and Y are paragraph labels, and any "GO TO X" statements executed after such an ALTER statement mean "GO TO Y" instead. Many compilers still support it,[40] but it was deemed obsolete in the COBOL 1985 standard[41] and should not be used in new programs. The use of ALTER has been banned altogether for some time by many software companies as part of their programming practices.

Object-oriented programming[edit]

Support for object-oriented programming was added in COBOL 2002. COBOL supports classes and interfaces. Classes have FACTORY objects, containing class methods and variables, and OBJECT objects, containing instance methods and variables. These objects may implement interfaces, which allows polymorphism. Objects are stored as references which may be optionally restricted to a certain type. Methods can be accessed through the INVOKE statement or through inline method invocation.

 *> These are equivalent. INVOKE my-class "foo" RETURNING bar MOVE my-class::"foo" TO bar *> Inline method invocation 

Method overloading is not permitted in COBOL 2002.

COBOL does not provide a way to hide methods. Class data can be hidden, however, by declaring it without a PROPERTY clause, which leaves the user with no way to access it.

Classes may inherit from the standard class BASE which provides the object constructor New and the factory object constructor FactoryObject. A factory object constructor allows factory methods to be called on objects of an unknown type.

Support for generic programming is provided through parameterized classes, which can be instantiated to use any class or interface.

Hello, world[edit]

A "Hello, world" program in COBOL:

        IDENTIFICATION DIVISION.        PROGRAM-ID. HELLO-WORLD.        PROCEDURE DIVISION.            DISPLAY 'Hello, world'.            STOP RUN. 

Hello, OS/360 circa 1972[edit]

On an IBM System/360 running OS/360 MVT 21.8f, circa 1972 (which predates the tradition of using Hello, world for introductory examples), a "Hello, world" program would have been punched onto 80-column cards, containing source code similar to:

 //COBUCLG  JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //HELOWRLD EXEC COBUCLG,PARM.COB='MAP,LIST,LET' //COB.SYSIN DD *   001  IDENTIFICATION DIVISION.   002  PROGRAM-ID.  'HELLO'.   003  ENVIRONMENT DIVISION.   004  CONFIGURATION SECTION.   005  SOURCE-COMPUTER.  IBM-360.   006  OBJECT-COMPUTER.  IBM-360.   0065 SPECIAL-NAMES.   0066     CONSOLE IS CNSL.   007  DATA DIVISION.   008  WORKING-STORAGE SECTION.   009  77  HELLO-CONST   PIC X(12) VALUE 'HELLO, WORLD'.   075  PROCEDURE DIVISION.   090  000-DISPLAY.   100      DISPLAY HELLO-CONST UPON CNSL.   110      STOP RUN. //LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR //            DD DSNAME=SYS1.LINKLIB,DISP=SHR //GO.SYSPRINT DD SYSOUT=A // 

The "//" source lines are JCL statements, surrounding the COBOL sequence-numbered source code. The ANS COBOL Compile, Link, and Go module "COBUCLG" was typically utilized to compile and execute the code. The resulting "HELLO, WORLD" output would have then been displayed on the operator's console.

Criticism and defense[edit]

Lack of structure[edit]

In his letter to an editor in 1975 entitled "How do we tell truths that might hurt?" which was critical of several of COBOL's contemporaries, computer scientist and Turing Award recipient Edsger Dijkstra remarked that "The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense."[42]

In his dissenting response to Dijkstra's article and the above "offensive statement," computer scientist Howard E. Tompkins defended structured COBOL: "COBOL programs with convoluted control flow indeed tend to 'cripple the mind'," but this was because "There are too many such business application programs written by programmers that have never had the benefit of structured COBOL taught well..."[43]

COBOL lacked any facility for defining independent subprograms until COBOL-74. This complicated development because it meant that all variables were global and could be modified anywhere within the program. However, its varied control structures reduced the need for GO TOs; the PERFORM statement, for example, allowed programmers to easily access powerful looping facilities.[44]:349–350

Additionally, the introduction of OO-COBOL has added support for object-oriented programming as well as user-defined functions and user-defined data types to COBOL's repertoire.

Compatibility issues after standardization[edit]

COBOL-85 was not fully compatible with earlier versions, resulting in the "caesarean birth" of COBOL-85.[clarification needed] Joseph T. Brophy, the CIO of Travelers Insurance, spearheaded an effort to inform users of COBOL of the heavy reprogramming costs of implementing the new standard.[4]:11 As a result, the ANSI COBOL Committee received more than 2,200 letters from the public, mostly negative, requiring the committee to make changes. On the other hand, conversion to COBOL-85 was thought to increase productivity in future years, thus justifying the conversion costs.[4]

Verbose syntax[edit]

COBOL syntax has often been criticized for its verbosity. However, proponents note that this was intentional in the language design because it made the code self-documenting, easing program maintenance.[12]:53 COBOL was intended to be easier for programmers to learn and use,[3](II.1.1) but while being readable to non-technical staff such as managers.[5]:ID/10[44]:350 The desire for readability and good program documentation is why COBOL has English-like syntax and structural elements, such as nouns, verbs, clauses, sentences, sections, and divisions. Consequently, COBOL is considered by one source to be "The most readable, understandable and self-documenting programming language in use today. [...] Not only does this readability generally assist the maintenance process but the older a program gets the more valuable this readability becomes."[45] On the other hand, by 1984, maintainers of COBOL programs were struggling to deal with "incomprehensible" code[5]:ID/10 and the main changes in COBOL-85 were there to help ease maintenance.[21]:48

Jean Sammet, a short-range committee member, noted that "little attempt was made to cater to the professional programmer, in fact people whose main interest in programming tend to be very unhappy with COBOL" which she attributed to COBOL's verbose syntax.[5]:ID/14

Alienation from the computer science community[edit]

The COBOL community has always been isolated from the computer science community. No academic computer scientists participated in the design of COBOL; all of those on the committee from commerce or government. This was due to the differing interests of computer scientists at the time, who were more interested in fields like numerical analysis, physics and system programming instead of the commercial file-processing problems COBOL development tackled. The COBOL specification did not use the new Backus-Naur form, resulting in severe criticism at the time. COBOL suffered from a shortage of material covering it; it took until 1963 for introductory books to appeared. By 1985, there were twice as many books on Fortran and four times as many on BASIC than on COBOL in the Library of Congress.[44]:348–349

Later, as COBOL became a mainstream language, COBOL suffered as university professors taught more modern, state-of-the-art languages and techniques instead of COBOL which was said to have a "trade school" nature.[44]:351

Flawed language features[edit]

COBOL suffered from poor string-handling facilities, which were only fixed in COBOL-74. The hard to spot and easily mislaid scope-delimiting period was problematic and superseded in COBOL-85 by scope-terminators. Until COBOL-85, only paragraphs could be used in PERFORM statements, which made programs harder to understand as the reader had to search for the body of the statement.[44]:350 Functions were introduced in the 1989 Amendments and user-defined functions were only introduced in COBOL 2002.

Other defenses[edit]

COBOL's data structures influenced subsequent programming languages. Its record and file structure influenced PL/I and Pascal, and the REDEFINES clause was a predecessor to Pascal's variant records. Explicit file structure definitions preceded the development of database management systems and aggregated data was a significant advance over Fortran's arrays.[44]:349

The COPY statement was a successful feature that became part of subsequent languages as an include directive.[44]:349

Until COBOL 2002, COBOL was a simple language with a limited scope of function (with no pointers, no user-defined types, and no user-defined functions), encouraging a straightforward coding style. This has made it well-suited to its primary domain of business computing—where the program complexity lies in the business rules that need to be encoded rather than sophisticated algorithms or data structures.

Standardization meant programs written in COBOL are portable and language has since spread on to a wide variety of hardware platforms and operating systems.[46] Additionally, the rigid hierarchical structure restricts the definition of external references to the Environment Division, which simplifies platform changes in particular.[45]

See also[edit]

References[edit]

  1. ^ Robinson, Brian (9 July 2009). "Cobol remains old standby at agencies despite showing its age". FCW. Public Sector Media Group. Retrieved 26 April 2014. 
  2. ^ a b Sammet, Jean E. (23 July 2004). "COBOL". In Riley, Edwin D. Concise Encyclopedia of Computer Science. Wiley. ISBN 978-0470090954. OCLC 249810423. 
  3. ^ a b c d e f g CODASYL (July 1969). CODASYL COBOL Journal of Development 1968. National Bureau of Standards. LCCN 73601243. 
  4. ^ a b c d Garfunkel, Jerome (1987). The COBOL 85 Example Book. New York: Wiley-Interscience. ISBN 0-471-80461-4. 
  5. ^ a b c d e Conner, Richard L. (14 May 1984). "Cobol, your age is showing". Computerworld 18 (20): ID/7–ID/18. ISSN 0010-4841. 
  6. ^ a b Hubbel, Thane (1999). Sams Teach Yourself COBOL in 24 Hours. Sams Publishing. ISBN 0-672-31453-3. LCCN 98087215. 
  7. ^ a b Williams, Kathleen Broome (10 November 2012). Grace Hopper: Admiral of the Cyber Sea. US Naval Institute Press. ISBN 978-1612512655. OCLC 818867202. 
  8. ^ Porter Adams, Vicki (5 October 1981). "Captain Grace M. Hopper: the Mother of COBOL". InfoWorld 3 (20): 33. ISSN 0199-6649. 
  9. ^ Betts, Mitch (6 Jan 1992). "Grace Hopper, mother of Cobol, dies". Computerworld 26 (1): 14. ISSN 0010-4841. 
  10. ^ a b Sammet, Jean (1978). "The Early History of COBOL". ACM SIGPLAN Notices (Association for Computing Machinery, Inc.) 13 (8): 121–161. doi:10.1145/960118.808378. Retrieved 14 January 2010. 
  11. ^ Wexelblat, Richard (1981). History of Programming Languages. Boston: Academic Press. ISBN 0-12-745040-8. 
  12. ^ a b c Belzer, Jack; Albert G., Holzman; Kent, Allen (1 December 1976). "COBOL". Encyclopedia of Computer Science and Technology: Volume 5. CRC Press. ISBN 978-0824722555. 
  13. ^ Triance, J. M. (1974). Programming in COBOL: A Course of Twelve Television Lectures. Manchester University Press. p. 87. ISBN 0-7190-0592-2. 
  14. ^ Klein, William M. (4 October 2010). "American National Standard COBOL 1974". The History of COBOL. p. 16. Archived from the original on 7 January 2013. Retrieved 7 January 2014. 
  15. ^ Baird, George N.; Oliver, Paul (May 1977). "1974 Standard (X3.23–1974)". Programming Language Standards — Who Needs Them?. pp. 19–21. Archived from the original on 7 January 2014. Retrieved 7 January 2014. 
  16. ^ Culleton, John R., Jr. (23 July 1975). "'Spotty' Availability A Problem...". Computerworld 9 (30): 17. ISSN 0010-4841. 
  17. ^ Simmons, Williams B. (18 June 1975). "Does Cobol's Report Writer Really Miss the Mark?". Computerworld 9 (25): 20. ISSN 0010-4841. 
  18. ^ Shoor, Rita (26 January 1981). "User Threatens Suit Over Ansi Cobol-80". Computerworld 15 (4): 1, 8. ISSN 0010-4841. 
  19. ^ Shoor, Rita (26 October 1981). "DPMA Takes Stand Against Cobol Draft". Computerworld 15 (43): 1–2. ISSN 0010-4841. 
  20. ^ a b c Gallant, John (16 September 1985). "Revised Cobol standard may be ready in late '85". Computerworld 19 (37): 1, 8. ISSN 0010-4841. 
  21. ^ a b "Expert addresses Cobol 85 standard". Computerworld 19 (37): 41, 48. 16 September 1985. ISSN 0010-4841. 
  22. ^ Paul, Lois (15 March 1982). "Responses to Cobol-80 Overwhelmingly Negative". Computerworld 16 (11): 1, 5. ISSN 0010-4841. 
  23. ^ Gillin, Paul (19 November 1984). "DEC users get head start implementing Cobol-80". Computerworld 18 (47): 1, 6. ISSN 0010-4841. 
  24. ^ Roy, M K; Dastidar, D Ghost (1 June 1989). "Features of COBOL - 85". COBOL Programming: Problems and Solutions (2nd ed.). McGraw-Hill Education. pp. 438–451. ISBN 978-0074603185. 
  25. ^ Saade, Henry; Wallace, Ann (October 1995). "COBOL '97: A Status Report". Dr. Dobb's Journal. Retrieved 21 April 2014. 
  26. ^ Arranga, Edmund C.; Coyle, Frank P. (February 1998). Object-Oriented COBOL. Cambridge University Press. p. 15. ISBN 978-0132611404. "Object-Oriented COBOL's style reflects the influence of Smalltalk and C++" 
  27. ^ "NetCOBOL for .Net". netcobol.com. GTSoftware. 2013. Retrieved 29 January 2014. 
  28. ^ Meyer, Ken; Piggott, John; Grealish, Rod (7 November 1983). "COBOL Input Validation". Computerworld: ID/21–ID/31. Retrieved 27 April 2014. 
  29. ^ "JTC1/SC22/WG4 - COBOL". ISO. 30 June 2010. Retrieved 27 April 2014. 
  30. ^ "ISO/IEC 1989". ISO. Retrieved 9 February 2014. 
  31. ^ a b c d "ISO/IEC 1989:20xx FCD 1.0 - Programming language COBOL" (PDF). ISO. 13 July 2010. Retrieved 9 February 2014. 
  32. ^ Kizior, Ronald J.; Carr, Donald; Halpern, Paul. "Does COBOL Have a Future?". The Proceedings of the Information Systems Education Conference 2000 17 (126). Retrieved 2012-09-30. 
  33. ^ a b Carr, Donald; Kizior, Ronald J. (13 June 2003). "Continued Relevance of COBOL in Business and Academia: Current Situation and Comparison to the Year 2000 Study" (PDF). Retrieved 5 January 2014. 
  34. ^ a b Mitchell, Robert L. (4 October 2006). "Cobol: Not Dead Yet". Computerworld. Retrieved 27 April 2014. 
  35. ^ "Cobol brain drain: Survey results". Computerworld. 14 March 2012. Retrieved 27 April 2014. 
  36. ^ "Reserved Words Table". Micro Focus Visual COBOL 2.2 COBOL Language Reference. Micro Focus. Retrieved 3 March 2014. 
  37. ^ a b c d Cutler, Gary (21 November 2013). "GNU COBOL 2.0 Programmer's Guide" (2nd ed.). Retrieved 25 February 2014. 
  38. ^ McCracken, Daniel D.; Golden, Donald G. (1988). "The RENAMES Clause". A Simplified Guide to Structured COBOL Programming (2nd ed.). Wiley. ISBN 0-471-61054-2. LCCN 87034608. 
  39. ^ "DATA DIVISION—Data description entry". Enterprise COBOL for z/OS Language Reference. IBM. 2013. Retrieved 25 February 2014. 
  40. ^ Examples of compiler support for ALTER can be seen in the following:
    • Tiffin, Brian. September 2013. "State of the Project". GNU Cobol. Retrieved 5 January 2014. 
    • "The ALTER Statement". Micro Focus Visual COBOL 2.2 for Visual Studio 2013 COBOL Language Reference. Micro Focus. Retrieved 5 January 2014. 
    • "ALTER Statement (Nucleus)" (PDF). COBOL85 Reference Manual. Fujitsu. November 1996. p. 555. Retrieved 5 January 2014. 
    • "ALTER Statement". Enterprise COBOL for z/OS Language Reference. IBM. June 2013. Retrieved 5 January 2014. 
  41. ^ "The ALTER Statement". Micro Focus Visual COBOL 2.2 for Visual Studio 2013 COBOL Language Reference. Micro Focus. Retrieved 28 December 2013. "The ALTER statement is classed as an obsolete element in the ANSI'85 standard and is scheduled to be deleted from the next full revision of the ANSI Standard." 
  42. ^ Dijkstra, Edsger W. (2006). "E. W. Dijkstra Archive: How do we tell truths that might hurt? (EWD498)". University of Texas at Austin. Retrieved August 29, 2007. 
  43. ^ Tompkins, H. E. (1983). "In defense of teaching structured COBOL as computer science". ACM SIGPLAN Notices 18 (4): 86. doi:10.1145/948176.948186.  edit
  44. ^ a b c d e f g Shneiderman, B. (October 1985). "The Relationship Between COBOL and Computer Science". Annals of the History of Computing (IEEE) 7 (4): 348–352. doi:10.1109/MAHC.1985.10041. 
  45. ^ a b Coughlan, Michael (2002). "Introduction to COBOL". Retrieved 3 February 2014. 
  46. ^ This can be seen in:

Sources[edit]