|Paradigm(s)||procedural, imperative, object-oriented|
|Designed by||Grace Hopper, William Selden, Gertrude Tierney, Howard Bromberg, Howard Discount, Vernon Reeves, Jean E. Sammet|
|Stable release||ISO/IEC 1989:2002 (2002)|
|Typing discipline||strong, static|
|Major implementations||GNU Cobol, Micro Focus International (e.g. the Eclipse-plug-in Micro Focus Net Express)|
|Dialects||HP3000 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 (a COBOL74 variant for creating screens on text-based terminals)|
|Influenced by||FLOW-MATIC, COMTRAN, FACT|
|Influenced||PL/I, CobolScript, ABAP|
COBOL // is one of the oldest programming languages, primarily designed by Grace Hopper from 1959 onwards. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments.
- 1 History and specification
- 2 Features
- 3 Criticism and defense
- 4 See also
- 5 References
- 6 Sources
History and specification
The COBOL specification was created by a committee of researchers from private industry, universities, and government during the second half of 1959. The specifications were to a great extent inspired by the FLOW-MATIC language invented by Grace Hopper,:10–11 commonly referred to as "the mother of the COBOL language." The IBM COMTRAN language invented by Bob Bemer was also drawn upon, but the FACT language specification from Honeywell was not distributed to committee members until late in the process and had relatively little impact. FLOW-MATIC's status as the only language of the bunch to have actually been implemented made it particularly attractive to the committee.
The scene was set on April 8, 1959 at a Conference on Data Systems Languages (CODASYL) for computer manufacturers, users, and university people, at the University of Pennsylvania Computing Center. The United States Department of Defense subsequently agreed to sponsor and oversee the next activities. A meeting chaired by Charles A. Phillips was held at the Pentagon on May 28 and 29 of 1959 (exactly one year after the Zürich ALGOL 58 meeting); there it was decided to set up three committees: short, intermediate and long range (the last one was never actually formed). It was the Short Range Committee, chaired by Joseph Wegstein of the US National Bureau of Standards, that during the following months created a description of the first version of COBOL. The committee was formed to recommend a short range approach to a common business language. 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). The intermediate-range committee was formed but never became operational. 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
The decision to use the name "COBOL" was made at a meeting of the committee held on 18 September 1959. The subcommittee completed the specifications for COBOL in December 1959.
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 edited and printed these specifications as COBOL 60. It contained many desirable features already implemented in other languages. The CODASYL Executive Committee later created the COBOL Maintenance Committee to answer questions from user and vendors and to improve and expand the specifications where appropriate.:47
The first compilers for COBOL were subsequently implemented later that year, and on December 6 and 7, essentially the same COBOL program ran on two different computer makes, an RCA computer and a Remington-Rand Univac computer, demonstrating that compatibility could be achieved.
ANS COBOL 1968
The COBOL 60 specification was replaced in 1961 by the publication of COBOL-61. This was also replaced by the COBOL-61 Extended specifications in 1963 which introduced the sort and report writer facilities.:48 In an attempt to overcome the problem of incompatibility between different versions of COBOL, efforts began to standardise COBOL. In late 1962, both ISO and the United States of America Standards Institute (now ANSI) formed groups to create standards. ANSI produced a USA Standard COBOL X3.23 in August 1968 which became the cornerstone for further versions. This version was known as American National Standard (ANS) COBOL.
In 1974, ANSI published a revised version of (ANS) COBOL, containing new features such as file organizations, the report writer module and the segmentation module. Several features were deleted from the standard, including 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.
- scope terminators (
- nested subprograms
- reference modification
Two amendments followed in 1989 and 1993, the first introducing intrinsic functions and the other providing corrections.
The 1985 standards and its amendments were adopted by ISO who subsequently took primary ownership and development of the standard.
COBOL 2002 and object-oriented COBOL
The language continues to evolve. In the early 1990s it was decided to add object-orientation in the next full revision of COBOL. The initial estimate was to have this revision completed by 1997 and an ISO CD (Committee Draft) was available by 1997. Some vendors (including Micro Focus, Fujitsu, Veryant, and IBM) introduced object-oriented syntax based on the 1997 or other drafts of the full revision. The final approved ISO standard (adopted as an ANSI standard by INCITS) was approved and made available in 2002.
Like the C++ and Java programming languages, object-oriented COBOL compilers are available even as the language moves toward standardization. Fujitsu/GTSoftware, Micro Focus and RainCode currently support object-oriented COBOL compilers targeting the .NET Framework.
COBOL 2002 included many other features beyond object-orientation. These included (but are not limited to):
- National language support (including but not limited to Unicode support)
- Locale-based processing
- User-defined functions
CALL(and function) prototypes (for compile-time parameter checking)
- Pointers and syntax for getting and freeing storage
- Calling conventions to and from non-COBOL languages such as C
- Support for execution within framework environments such as Microsoft's .NET and Java (including COBOL instantiated as Enterprise JavaBeans)
- Bit and Boolean support
- "True" binary support (up until this enhancement, binary items were truncated based on the (base-10) specification within the Data Division)
- Floating-point support
- Standard (or portable) arithmetic results
ARITHMETIC IS STANDARDwas replaced by IEEE 754 data types
- Many major features have been made optional, such as object-orientation, the
VALIDATEfacility, the report writer and the screen-handling facility.
- Method overloading
- Dynamic capacity tables
COBOL programs are in use globally in governmental and military agencies and in commercial enterprises, and are running on operating systems such as IBM's z/OS and z/VSE, the POSIX families (Unix/Linux etc.), and Microsoft's Windows as well as ICL's VME operating system and Unisys' OS 2200. In 1997, the Gartner Group reported that 80% of the world's business ran on COBOL with over 200 billion lines of code in existence and with an estimated 5 billion lines of new code annually.
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 for COBOL code has been attributed both to the large amount of business-oriented COBOL, as COBOL is by design a business language and business applications use dates heavily, and to constructs of the COBOL language such as the
PICTURE clause, which can be used to define fixed-length numeric fields, including two-digit fields for years. After the clean-up effort put into these COBOL programs for Y2K, a 2003 survey found that many of them remained in use.:16 The authors said that the survey data reflect "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".:10
|This article needs additional citations for verification. (February 2014)|
COBOL as defined in the original specification included a
PICTURE clause for detailed field specification. It did not support local variables, recursion, dynamic memory allocation, or independent subprograms.  Support for some or all of these features has been added in later editions of the COBOL standard. Standard COBOL has over 300 reserved words,(8.9) called keywords. However, compiler extensions mean many implementations have far more, with one implementation recognizing over 1100 keywords.
The original COBOL specification supported the infamous "
ALTER X TO PROCEED TO Y" statement, for which many compilers generated self-modifying code.
Y are paragraph labels, and any "
GO TO X" statements executed after such an
ALTER statement have the meaning "
GO TO Y" instead. Many compilers still support it, but it was deemed obsolete in the COBOL 1985 standard 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.
COBOL provides an update-in-place syntax, for example
ADD YEARS TO AGE
The equivalent construct in many procedural languages is
age = age + years
This syntax is similar to the compound assignment operator later adopted by C:
age += years
The abbreviated conditional expression
IF SALARY > 9000 OR SUPERVISOR-SALARY OR = PREV-SALARY
is equivalent to
IF SALARY > 9000 OR SALARY > SUPERVISOR-SALARY OR SALARY = PREV-SALARY
COBOL provides "named conditions" (so-called 88-levels). These are declared as sub-items of another item (the conditional variable). The named condition can be used in an
IF statement, and tests whether the conditional variable is equal to 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 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. COBOL does this with the
COPY statement, which also allows other code to replace parts of the copybook's code (using the
REPLACING ... BY ... clause).
Fixed-format code is the default code format. Up to COBOL-85, fixed-format code was split into 5 areas:
|Sequence number area||1–6||Originally used for card/line numbers, this area was ignored by the compiler.|
|Indicator area||7||The following characters could go here:
|Area A||8–11||The following had to begin here:
|Area B||12–72||Any other code not allowed in Area A.|
|Program name area||72–||Historically up to column 80 for punched cards, it was used to identify the program the card belonged to.|
In COBOL 2002, Areas A and B were merged and their size was left to the implementer.
Free-format code was introduced in COBOL 2002. It allows code to be placed in any column of the file much like newer languages such as C and Pascal. The
* comment indicator was replaced by
*> which could be placed anywhere in the program and be used in fixed-format source code. However, no equivalent to the
/ was introduced and continuation is now only allowed for string literals.(1.6)
Data items in COBOL are declared in a hierarchical manner through the use of data levels. An item with a higher data level is subordinate to a data item with a lower one. Data items which are not subordinate to another item are called records. Items that have no data subordinate to it are called elementary items while those that do are called group items.(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,
the-date are subordinate to the record
the-day are part of the group item
Level-numbers are 1- or 2-digit numbers which indicate the data level. Not all of them may be used to describe ordinary data items::40–41
||Used to describe data fields.|
||Indicates a regrouping of previously defined items. Used with the
||Indicates elementary items that are not part of a group. Equivalent to a stand-alone
||An extension that indicates that items are compile-time constants.|
||Used for condition names.|
Standard COBOL provides the following data types::118
|Data type||Sample declaration||Notes|
||May only contain letters or spaces|
||May contain any characters|
||Data stored in the form of 0s and 1s, as a binary number|
||Used to reference table elements|
||Similar to alphanumeric, but using an extended character set, e.g. UTF-8|
||May reference either an object or be
Numeric data can be stored in several formats:(220.127.116.11)
- Binary, where data is stored in a binary format with a minimum size specified by the
USAGE BINARY, or by a
USAGEclause such as
USAGE COMPUTATIONAL, where data may be stored in whatever format the implementation provides; often equivalent to
USAGE DISPLAY, the default format, where data is stored as a string
- Floating-point, where data is stored in a floating-point format which can be specified by the implementation (by using, for example,
USAGE FLOAT-LONG) or according to IEEE 754 (by using, for example,
USAGE NATIONAL, where data is stored as a string with an extended character set
USAGE PACKED-DECIMAL, where data is stored in the smallest possible decimal format (typically packed binary-coded decimal)
Edited data are formatted string types that are specified by symbols in a
PICTURE clause. For example, the
, symbol 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.: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 (if
USAGE NATIONAL is specified).
|Data type||Sample declaration||Notes|
|Signed packed decimal||
|Fixed-point native binary||
||May be signed or unsigned. The
|Unsigned packed decimal||
||Equivalent to alphanumeric data, but using a double-byte character set.|
The procedure division is made of sections and paragraphs which can be used as labels and as simple subroutines. Sections may contain paragraphs, but 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 can be used similarly to 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.
An example of the "Hello, world" program in COBOL:
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. PROCEDURE DIVISION. DISPLAY 'Hello, world'. STOP RUN.
Hello, OS/360 circa 1972
On an IBM System/360 running OS/360 MVT 21.8f, circa 1972 (which predates the tradition of using Hello, world for introductory examples), Hello, world 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 //
//" 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
||This section is written like a personal reflection or opinion essay rather than an encyclopedic description of the subject. (January 2013)|
Lack of structurability
In his letter to an editor in 1975 entitled "How do we tell truths that might hurt?" which was critical of several programming languages contemporaneous with COBOL, 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."
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..."
COBOL lacked any facility for defining independent procedures/functions 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, with the
PERFORM statement allowing programmers to easily access powerful looping facilities.:349–350
Additionally, the introduction of OO-COBOL has added support for object-oriented code as well as user-defined functions and user-defined data types to COBOL's repertoire.
Compatibility issues after standardization
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.:11 As a result the ANSI COBOL Committee received more than 3,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.
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.:53 One of the design goals of COBOL was that non-programmers—managers, supervisors, and users—could read and understand the code.:350 This is why COBOL has English-like syntax and structural elements—including: nouns, verbs, clauses, sentences, sections, and divisions. Consequently, COBOL is considered by at least 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." On the other hand, the mere ability to read and understand a few lines of COBOL code does not grant to an executive or end user the experience and knowledge needed to design, build, and maintain large software systems.
Alienation from the computer science community
The COBOL community has always been isolated from the computer science community. No academic computer scientists participated in the design of COBOL, with all of those on the committee from a commercial background or from 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 also suffered from a shortage of material covering it, with introductory books taking until 1963 to appear. By 1985, there were twice as many books on Fortran and four times as many books on BASIC than on COBOL in the Library of Congress.: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.:351
Flawed language features
COBOL historically 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.:350
COBOL's data structures influenced subsequent programming languages, with its record and file structure influencing PL/I and Pascal. The
REDEFINES clause was a predecessor to Pascal's variant records and explicit file structure definitions preceded the development of database management systems. Aggregated data was also a significant advance over the arrays found in Fortran.: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. Additionally, the rigid hierarchical structure restricts the definition of external references to the Environment Division, which simplifies platform changes in particular.
- Programming language genealogies
- Alphabetical list of programming languages
- Comparison of programming languages
- GNU Cobol
- Oliveira, Rui (2006). The Power of Cobol. City: BookSurge Publishing. ISBN 0-620-34652-3.
- Hubbel, Thane (1999). Sams Teach Yourself COBOL in 24 Hours. Sams Publishing. ISBN 0-672-31453-3. LCCN 98-87215.
- Williams, Kathleen Broome (10 November 2012). Grace Hopper: Admiral of the Cyber Sea. US Naval Institute Press. ISBN 978-1612512655. OCLC 818867202.
- 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.
- Garfunkel, Jerome (1987). The COBOL 85 Example Book. New York: Wiley-Interscience. ISBN 0-471-80461-4.
- Wexelblat, Richard (1981). History of Programming Languages. Boston: Academic Press. ISBN 0-12-745040-8.
- Belzer, Jack; Albert G., Holzman; Kent, Allen (1 December 1976). "COBOL". Encyclopedia of Computer Science and Technology: Volume 5. CRC Press. ISBN 978-0824722555.
- "Standardization". CODASYL COBOL Journal of Development 1968. July 1969. LCCN 73601243.
- 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.
- 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.
- 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.
- "NetCOBOL for .Net". netcobol.com. GTSoftware. 2013. Retrieved 29 January 2014.
- "ISO/IEC 1989". ISO. Retrieved 9 February 2014.
- "ISO/IEC 1989:20xx FCD 1.0 - Programming language COBOL" (PDF). ISO. 13 July 2010. Retrieved 9 February 2014.
- 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.
- 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.
- "COBOL Initial Specifications for a COmmon Business Oriented Language". Department of Defense. April 1960. Archived from the original on 12 February 2014. Retrieved 11 February 2014.
- "Reserved Words Table". Micro Focus Visual COBOL 2.2 COBOL Language Reference. Micro Focus. Retrieved 3 March 2014.
- Examples of compiler support 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.
- "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."
- Cutler, Gary (21 November 2013). "GNU COBOL 2.0 Programmer's Guide" (2nd ed.). Retrieved 25 February 2014.
- "DATA DIVISION—Data description entry". Enterprise COBOL for z/OS Language Reference. IBM. 2013. Retrieved 25 February 2014.
- 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.
- Tompkins, H. E. (1983). "In defense of teaching structured COBOL as computer science". ACM SIGPLAN Notices 18 (4): 86. doi:10.1145/948176.948186.
- 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.
- Coughlan, Michael (2002). "Introduction to COBOL". Retrieved 3 February 2014.
- This can be seen in:
- Ebbinkhuijsen, Wim B.C., COBOL Alphen aan den Rijn/Diegem: Samson Bedrijfsinformatie bv, 1990. ISBN 90-14-04560-3. (Dutch)
|Wikibooks has more on the topic of: COBOL|