Key Takeaways — Chapter 40: COBOL and the Modern Stack

Core Concepts

  1. COBOL can be containerized using GnuCOBOL on Linux. Multi-stage Docker builds produce lean runtime images. However, mainframe-specific features (CICS, VSAM, JCL) are not available in containers.

  2. Cloud COBOL spans a spectrum from running actual z/OS in IBM's cloud (minimal change) to converting COBOL to Java (maximum change). Most organizations choose a middle ground.

  3. Git works for COBOL as well as for any other language. Standard branching strategies (feature branches, pull requests, code review) apply directly.

  4. CI/CD pipelines dramatically reduce deployment time. GlobalBank went from 14 days to 3 days. Compile errors detected in minutes instead of hours.

  5. IBM DBB understands COBOL dependencies and recompiles only programs impacted by a change. This is essential for large codebases with hundreds of copybooks.

  6. COBOL-Check provides unit testing specifically designed for COBOL. Integration tests verify end-to-end batch job behavior.

  7. Microservices architecture works with COBOL when each program is wrapped with an HTTP interface and given independent data ownership.

  8. Modern IDEs (VS Code, Eclipse, IntelliJ) provide syntax highlighting, copybook navigation, and mainframe integration through extensions like IBM Z Open Editor and Zowe Explorer.

  9. Zowe CLI bridges Git-based workflows and z/OS, enabling CI/CD pipelines to compile and deploy on the mainframe.

  10. Infrastructure as Code (Ansible for z/OS, Terraform) automates mainframe deployment tasks that were previously manual.

Modernization Without Rewriting

The central theme: modernize the development and deployment process, not necessarily the code itself.

What Changes What Stays
Source control (Endevor to Git) COBOL programs
Build process (manual to CI/CD) Business logic
Testing (manual to automated) Copybook layouts
Deployment (bi-weekly to on-demand) Data formats
Editor (ISPF to VS Code) Program structure

Common Mistakes to Avoid

  • Assuming containerized COBOL is identical to mainframe COBOL (it is not — runtime differences exist)
  • Trying to containerize programs that depend on CICS or VSAM without modification
  • Hardcoding credentials in source code or JCL (use secret management)
  • Skipping automated testing because "the program has worked for years"
  • Forcing microservices architecture when a monolithic CICS application works well
  • Ignoring security when exposing COBOL services through APIs