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

  1. External evidence (JCL, schedule) saves hours of code reading
  2. The hardest questions are answered by people, not code
  3. Systematic approach beats random reading every time
  4. Legacy workarounds outlive their purpose — code archaeology finds them

Discussion Questions

  1. Without Harold Mercer's input, how would Maria have decided whether to keep or remove paragraph 4700?
  2. The 15 account numbers in the parameter file were all closed. What if some were still active? How would that change the analysis?
  3. Maria spent 5 days on archaeology for a modification that took 2 hours to code. Was this time well spent?
  4. How would you prevent the next generation of developers from facing the same archaeology challenge with GLRECON?