Further Reading — Chapter 7: Iteration Patterns

Books

  • Stern, N., Stern, R., & Ley, J. (2006). COBOL for the 21st Century (11th ed.). Wiley. Chapter 6 covers PERFORM in all its forms with clear diagrams showing TEST BEFORE/AFTER behavior. The batch processing examples are particularly relevant.

  • Murach, M. (2020). Murach's Mainframe COBOL. Murach. Chapter 6 provides a practical treatment of PERFORM patterns with an emphasis on production coding standards.

  • Knuth, D. (1997). The Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd ed.). Addison-Wesley. While not COBOL-specific, Knuth's treatment of loop invariants and termination proofs provides the theoretical foundation for understanding why defensive loop programming matters.

IBM Documentation

  • IBM Enterprise COBOL for z/OS Language Reference (SC27-1408). Section 7.36 (PERFORM statement) is the authoritative reference for all PERFORM forms, including the exact semantics of TEST BEFORE/AFTER and VARYING counter behavior.

  • IBM Enterprise COBOL for z/OS Programming Guide (SC27-1412). The performance tuning chapter includes recommendations for optimizing PERFORM loops, including index usage vs. subscript usage.

  • IBM Enterprise COBOL for z/OS Migration Guide (GC27-1409). Covers EXIT PERFORM and EXIT PERFORM CYCLE compatibility across compiler versions.

Articles and Papers

  • Bohm, C., & Jacopini, G. (1966). "Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules." Communications of the ACM, 9(5), 366-371. The seminal paper proving that any algorithm can be expressed using only sequence, selection, and iteration — the theoretical justification for structured programming with PERFORM.

  • Mills, H. D. (1972). "Mathematical Foundations for Structured Programming." IBM Technical Report FSC 72-6012. Harlan Mills' application of the Bohm-Jacopini theorem to practical programming, which directly influenced COBOL structured programming practices.

Online Resources

  • IBM Z Xplore (https://www.ibm.com/it-infrastructure/z/education/zxplore) The COBOL challenges include exercises on PERFORM VARYING and sequential file processing. Excellent for practicing the priming read pattern.

  • GnuCOBOL FAQ and Samples (https://gnucobol.sourceforge.io/faq/index.html) Includes working examples of EXIT PERFORM and EXIT PERFORM CYCLE for students using GnuCOBOL.

  • Chapter 6: Advanced Conditional Logic — Conditional expressions used in PERFORM UNTIL conditions and within loop bodies.
  • Chapter 8: Paragraph and Section Design — How to design paragraphs that are performed by loops — naming, cohesion, and the PERFORM THRU debate.
  • Chapter 11: Table Handling Fundamentals — PERFORM VARYING is the primary mechanism for table traversal; SEARCH provides an alternative.
  • Chapter 12: Advanced Table Processing — Binary search, SEARCH ALL, and multi-dimensional table patterns.
  • Chapter 14: Sequential File Processing — The priming read pattern in full production context with multiple input files and control breaks.