Case Study 1: GlobalBank 1987 GL Reconciliation Module
The Assignment
Maria Chen needed to add support for a new account type (Health Savings Account) to the general ledger reconciliation module, GLRECON. The program was written in 1987, last modified in 2003, and had 12 comment lines — all in the IDENTIFICATION DIVISION.
The Archaeology Process
Day 1: External Evidence
Maria examined the JCL and scheduling information: - GLRECON ran as Step 7 in the nightly batch, after interest calculation - Inputs: GL daily transactions, account master file - Outputs: reconciled GL file, exception report, control totals - The program compared account-level balances against general ledger balances
Day 2: Data Division Survey
Key findings: - 47 working storage variables, many with cryptic names (WS-A1 through WS-A5, WS-B1 through WS-B3) - 23 flags controlling processing flow - 3 tables loaded from a parameter file (account type mappings, GL category codes, tolerance thresholds) - Financial accumulators in COMP-3
Day 3: Call Graph and Control Flow
The program was mostly well-structured: - 0000 → 1000 (init) → 2000 (process loop) → 9000 (terminate) - Exception: paragraphs 4700-4799 used PERFORM THRU with complex logic
Day 4: The Mystery of 4700-SPECIAL-RECON
This paragraph read a parameter file containing 15 specific account numbers and applied fixed dollar adjustments to their GL balances. No comments explained why.
Day 5: The Phone Call
Maria located Harold Mercer (retired 2010) through HR's alumni network. Twenty minutes on the phone revealed: the adjustments compensated for rounding errors from a 1995 system conversion. They were never intended to be permanent.
Outcome
- 24-page documentation package produced
- 31 business rules cataloged
- Paragraph 4700 recommended for removal (all 15 accounts closed)
- Original modification (new HSA account type) completed successfully
- Total archaeology time: 5 days
Key Lessons
- External evidence (JCL, schedule) saves hours of code reading
- The hardest questions are answered by people, not code
- Systematic approach beats random reading every time
- Legacy workarounds outlive their purpose — code archaeology finds them
Discussion Questions
- Without Harold Mercer's input, how would Maria have decided whether to keep or remove paragraph 4700?
- The 15 account numbers in the parameter file were all closed. What if some were still active? How would that change the analysis?
- Maria spent 5 days on archaeology for a modification that took 2 hours to code. Was this time well spent?
- How would you prevent the next generation of developers from facing the same archaeology challenge with GLRECON?