Key Takeaways — Chapter 40: COBOL and the Modern Stack
Core Concepts
-
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.
-
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.
-
Git works for COBOL as well as for any other language. Standard branching strategies (feature branches, pull requests, code review) apply directly.
-
CI/CD pipelines dramatically reduce deployment time. GlobalBank went from 14 days to 3 days. Compile errors detected in minutes instead of hours.
-
IBM DBB understands COBOL dependencies and recompiles only programs impacted by a change. This is essential for large codebases with hundreds of copybooks.
-
COBOL-Check provides unit testing specifically designed for COBOL. Integration tests verify end-to-end batch job behavior.
-
Microservices architecture works with COBOL when each program is wrapped with an HTTP interface and given independent data ownership.
-
Modern IDEs (VS Code, Eclipse, IntelliJ) provide syntax highlighting, copybook navigation, and mainframe integration through extensions like IBM Z Open Editor and Zowe Explorer.
-
Zowe CLI bridges Git-based workflows and z/OS, enabling CI/CD pipelines to compile and deploy on the mainframe.
-
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