Chapter 8: Iteration -- The PERFORM Statement in All Its Forms -- Further Reading

Books

"Murach's Mainframe COBOL" by Mike Murach and Associates Murach's treatment of the PERFORM statement is among the best available, with paired-pages format showing PERFORM syntax on one side and annotated examples on the other. The book emphasizes structured programming conventions that use PERFORM to create a top-down, modular program structure. Particularly valuable are the maintenance-oriented examples showing how to refactor PERFORM THRU into individual PERFORM calls. Available from the Murach website and major booksellers.

"Stern's COBOL for the 21st Century" by Nancy and Robert Stern This long-running textbook provides extensive drill exercises for every form of the PERFORM statement. The chapter on iteration includes step-by-step trace tables that walk through PERFORM VARYING execution, showing exactly how the identifier is initialized, tested, and incremented on each pass. The exercises progress from simple PERFORM TIMES to complex nested PERFORM VARYING with AFTER. Search for this title through academic publishers or used bookstores.

"Advanced COBOL for Structured and Object-Oriented Programming" by Gary DeWard Brown Brown's advanced text explores PERFORM in the context of program design, showing how PERFORM-based modular structure compares to object-oriented approaches introduced in COBOL-2002. The discussion of performance implications of inline versus out-of-line PERFORM is particularly insightful for programmers working on high-volume batch processing. Available through technical booksellers.

Online Resources

IBM Enterprise COBOL Language Reference -- PERFORM Statement The definitive syntax reference for every form of the PERFORM statement in Enterprise COBOL for z/OS. This section includes precise syntax diagrams for PERFORM, PERFORM TIMES, PERFORM UNTIL, and PERFORM VARYING, along with the formal rules for WITH TEST BEFORE/AFTER and the AFTER phrase for nested loops. Navigate to the PERFORM statement section within the Procedure Division statements chapter of the IBM Documentation portal.

IBM Enterprise COBOL Programming Guide -- Selecting and Repeating Program Actions This section of the programming guide provides practical guidance on choosing the appropriate form of PERFORM for different situations. It includes recommendations on loop structure for sequential file processing, table searching, and report generation. The guide also documents compiler optimizations related to PERFORM and when inline PERFORM may execute more efficiently. Available on the IBM Documentation website.

GnuCOBOL Programmer's Guide -- PERFORM The GnuCOBOL documentation provides a concise treatment of PERFORM with working examples that can be compiled and run on any platform. This is an excellent resource for hands-on practice, as readers can experiment with every PERFORM variant without access to a mainframe. The guide also notes any behavioral differences between GnuCOBOL and IBM Enterprise COBOL. Available through the GnuCOBOL project on SourceForge.

IBM Documentation

IBM Redbook: "Application Programming on the Enterprise" (SG24-series) Several IBM Redbooks cover structured COBOL programming practices, including the disciplined use of PERFORM to create maintainable batch programs. These Redbooks provide architectural guidance on how to organize the PROCEDURE DIVISION into initialization, processing, and termination paragraphs invoked by a main-line PERFORM structure. Search for COBOL-related Redbooks on the IBM Redbooks website.

IBM Knowledge Center: "Enterprise COBOL Performance Tuning" This technical resource discusses the runtime performance characteristics of different PERFORM forms, including the overhead of out-of-line PERFORM versus inline PERFORM, and the impact of WITH TEST BEFORE versus WITH TEST AFTER on branch prediction. While performance differences are small per iteration, they become significant in loops that execute millions of times during batch processing. Search for COBOL performance tuning on the IBM Documentation site.

Standards and Specifications

ISO/IEC 1989:2023 -- COBOL Standard, Section on PERFORM The COBOL standard defines the formal semantics of the PERFORM statement, including the precise order of operations for PERFORM VARYING (initialize, test, execute, increment) and the rules governing nested PERFORM and recursive invocation. Reading the standard clarifies edge cases such as what happens when the FROM, BY, or UNTIL operands are modified during loop execution. Available for purchase through ISO or national standards bodies.

"The Structured Programming Theorem and COBOL" -- Academic Papers The Bohm-Jacopini theorem demonstrates that any program can be written using only sequence, selection, and iteration. COBOL's PERFORM UNTIL directly implements the iteration component of this theorem. Academic papers exploring structured programming in the context of COBOL provide valuable background on why PERFORM replaced GO TO as the preferred control-flow mechanism. Search academic databases such as IEEE Xplore or ACM Digital Library for papers on structured COBOL programming.

"COBOL Standards Committee (J4) Meeting Minutes" Historical minutes from the COBOL standards committee document the discussions that led to the addition of inline PERFORM, EXIT PERFORM, and EXIT PERFORM CYCLE to the language. These minutes reveal the design trade-offs and compatibility concerns that shaped the PERFORM statement as it exists today. Available through INCITS (InterNational Committee for Information Technology Standards) archives.