Chapter 2: Further Reading -- COBOL Program Structure

Books

"Murach's Mainframe COBOL" by Mike Murach & Associates This book is one of the most accessible introductions to COBOL program structure and is widely used in corporate training programs. Its paired-pages format presents concepts on the left page and code examples on the right, making it particularly effective for learning the four-division structure and fixed-format layout. The early chapters provide excellent coverage of Area A vs. Area B rules and division organization. Look for the most recent edition at the publisher's website or major booksellers.

"COBOL for the 21st Century" by Nancy Stern, Robert A. Stern, and James P. Ley A classic college textbook that has been updated through multiple editions. Its treatment of COBOL program structure is thorough and methodical, walking through each division with detailed syntax diagrams and numerous examples. The book is especially strong on the ENVIRONMENT DIVISION's FILE-CONTROL paragraph and file organization types. Available through Wiley or used book sellers.

"Beginning COBOL for Programmers" by Michael Coughlan Written specifically for programmers who already know another language, this book covers COBOL's structural elements without belaboring general programming concepts. The author's approach to explaining the fixed-format layout in terms familiar to developers from C, Java, or Python backgrounds is particularly helpful. Published by Apress, it is available in print and digital formats.

"The Power of COBOL" by Apress This intermediate reference provides deeper coverage of the ENVIRONMENT DIVISION's SPECIAL-NAMES paragraph, including currency sign customization, DECIMAL-POINT IS COMMA, and class conditions. It also covers the subtleties of PERFORM THRU with sections versus paragraphs -- a topic that generates significant debate in COBOL shops. Useful as a second reference after completing an introductory text.

Online Resources

GnuCOBOL Programmer's Guide (maintained by the GnuCOBOL project) The official documentation for GnuCOBOL includes a comprehensive treatment of both fixed-format and free-format source code, compiler directives for switching between formats, and the specific column rules that GnuCOBOL enforces. This is the essential reference for anyone using GnuCOBOL as their learning compiler. Search for "GnuCOBOL Programmer's Guide" on the GnuCOBOL project site hosted at SourceForge.

IBM COBOL Cafe (IBM Developer Community) IBM maintains an active community forum and resource collection for COBOL programmers. The site includes articles on program structure best practices, tips for organizing the PROCEDURE DIVISION, and discussions of coding standards used in large mainframe shops. Search for "IBM COBOL Cafe" on the IBM Developer website.

COBOL Standard Documentation (ISO/IEC 1989) The official COBOL language standard document defines the precise rules for each division, section, and paragraph. While it reads like a legal document rather than a tutorial, it is the authoritative source for resolving any ambiguity about what is required versus optional in program structure. The COBOL-2014 standard (ISO/IEC 1989:2014) is the most recent published version. It can be purchased from ISO or accessed through national standards bodies. Draft versions are sometimes available through the J4 COBOL standards committee (INCITS).

IBM Documentation

"Enterprise COBOL for z/OS: Language Reference" (IBM publication) This is the definitive reference for COBOL on IBM mainframes. The chapters on the IDENTIFICATION DIVISION, ENVIRONMENT DIVISION, DATA DIVISION, and PROCEDURE DIVISION provide IBM-specific details including the behavior of DISPLAY UPON CONSOLE, the interaction between FILE-CONTROL and JCL DD statements, and compiler-specific extensions to the standard. Search for the publication number SC27-1408 (or later) on the IBM Knowledge Center.

"Enterprise COBOL for z/OS: Programming Guide" (IBM publication) Where the Language Reference defines syntax, the Programming Guide explains how to use it effectively. It includes guidance on structuring programs for maintainability, organizing the PROCEDURE DIVISION with sections versus paragraphs, and best practices for FILE STATUS checking. The sections on compile-link-go procedures and JCL integration are especially relevant to understanding how the ENVIRONMENT DIVISION connects the program to the operating system. Search for SC27-1412 on the IBM Knowledge Center.

"Enterprise COBOL for z/OS: Migration Guide" (IBM publication) When working with legacy programs, the Migration Guide explains how program structure has evolved across COBOL standards -- from COBOL-68 through COBOL-2014. It documents which IDENTIFICATION DIVISION paragraphs are now obsolete, when free-format support was added, and how the PROCEDURE DIVISION USING clause changed between standards. Invaluable for maintenance programmers encountering older coding styles.

Standards and Historical References

"Revised Report on the Algorithmic Language COBOL" (CODASYL, 1961) The original COBOL specification, produced by the Conference on Data Systems Languages, establishes the four-division structure that has remained unchanged for over six decades. Reading the original rationale for separating program identity, environment, data, and procedure into distinct divisions provides insight into why COBOL programs are organized the way they are. This historical document is available through computer history archives and university libraries. Search for "CODASYL COBOL 1961 report" in academic databases.

"A History of COBOL" by Jean Sammet (in "History of Programming Languages" conference proceedings) Jean Sammet was one of the original designers of COBOL and later wrote the definitive history of the language's creation. Her account explains the business and technical pressures that led to the four-division structure and the fixed-format layout. Understanding this history helps modern programmers appreciate why COBOL's structure is the way it is, rather than viewing it as arbitrary. Available through the ACM Digital Library.