The proof layer for legacy modernization
Any vendor or AI tool can convert COBOL. CodeProva proves the result: which customers would get a different outcome, by how much, and the line of legacy code that explains why. It runs inside your environment.
READS WHAT YOUR MAINFRAME ACTUALLY RUNS
Overview
Why modernization needs proof, and how CodeProva provides it.
Verify any conversion
Compare the legacy and modernized outputs, whoever did the conversion. Thousands of mismatches become a handful of causes, each with the customers affected, the dollars involved and the legacy line that explains it.
5,000
accounts checked
3,085
would get a different result
4
causes, all explained
< 1 s
to analyse
| CAUSE | ACCOUNTS | NET IMPACT | LEGACY CODE |
|---|---|---|---|
| Small-business accounts charged 0% instead of the default rate | 448 | −$41,304.58 | CBACT04C.cbl:437 |
| Negative balances handled differently | 607 | +$3,371.73 | CBACT04C.cbl:464 |
| One-cent differences: legacy truncates, new system rounds | 2,002 | +$20.02 | CBACT04C.cbl:464 |
| Inactive accounts missing from the new output | 28 | — | no status check in legacy |
CBACT04C.cbl:437 · why 448 accounts differ
MOVE 'DEFAULT' TO FD-DIS-ACCT-GROUP-ID
When an account’s group has no rate, the legacy program falls back to the default rate. The new system charges no interest at all. Every affected account, its dollar difference and a reviewer decision are recorded as evidence.
Demo on AWS CardDemo’s interest program with synthetic data and a simulated conversion. Download the verification report.
The problem
Interest calculations, delinquency notices, escrow shortages. Decades of decisions written in COBOL, usually documented nowhere else.
01
The people who know why a program does what it does are retiring, and their knowledge leaves with them.
02
One copybook can feed dozens of programs. Without a map, every change is a guess and every estimate is padded.
03
A model can translate code, but regulators ask who checked it, against what, and how you know it behaves the same.
See it read code
This is LNCALC1, the interest program from a sample loan-servicing system. CodeProva explains every line, finds the business rules, and cites the exact file and line for each one.
COPY LNMASTR.Line 18 · shared layout
The same layout is copied by LNPAY01, LNDLQ01 and LNINQ01. Change a field here and all four programs change with it. CodeProva shows that before anyone edits a line.
PROCEDURE DIVISION USING LOAN-MASTER-REC LK-INTEREST.Line 20 · who calls this
LNPAY01 calls it through a variable, WS-CALC-PGM, not a literal name. Simple text search misses that. CodeProva traces the value back to resolve the call.
ACCEPT WS-TODAY FROM DATELine 22
COBOL’s DATE gives YYMMDD, so the century has to be guessed. The next block does exactly that.
IF WS-TODAY-YY < 50 MOVE 20 TO WS-CENTURY ELSE MOVE 19 TO WS-CENTURY END-IFLines 23–27 · business rule · timing
A century window left over from Y2K. It works today, but from 2050 this program will think it is 1950. That goes straight into the risk register.
COMPUTE WS-MONTHLY-RATE = LM-NOTE-RATE / 1200Line 28
The note rate is stored as a percentage, so dividing by 1,200 gives a monthly decimal. A 6.000% loan becomes 0.005 a month.
COMPUTE LK-INTEREST ROUNDED = LM-PRIN-BAL * WS-MONTHLY-RATELine 29
Rounded to the cent. On a $200,000 balance at 6%, that is $1,000.00 for the month. The new system must round the same way, and the tests check it.
IF LK-INTEREST > LM-PI-PMT MOVE LM-PI-PMT TO LK-INTEREST END-IFLines 30–32 · business rule · money
If the interest would be bigger than the P&I payment, it is capped. What happens to the difference? The code doesn’t say, so CodeProva asks the business owner to confirm before anything is converted.
GOBACK.Line 33
LNPAY01 then posts the payment to the loan master. Together the two form the recommended pilot: contained, batch, and easy to prove record by record.
Plain-English reading
Every explanation here came from reading the source. Nothing was executed. The two lines marked as rules land in the business rules catalog, where their owners confirm them before conversion.
The assessment
From a sample loan-servicing assessment: eight programs, 381 lines, four copybooks, two batch jobs and three online transactions, all turned into a plan an executive can sign.
Convert · 3
Translate with AI, then prove it with old-versus-new testing.
Convert with expert review · 3
Money rules inside. A business expert confirms them before sign-off.
Unblock first · 1
Calls a program whose source wasn’t supplied. We ask for it before scoping.
Confirm and retire · 1
Nothing calls it. Confirm with run history, then drop it from scope.
STAGE 0
Answer the open questions so LNDLQ01 and LNOLD99 can be scoped or removed.
STAGE 1 · PILOT
Proven by running old and new on the same input and comparing LOANMAST and PAYREJ record by record.
STAGE 2
Terminal screens become services and a web front end, proven by replaying recorded journeys.
STAGE 3
Programs with sensitive rules, converted only after their owners sign off the rules catalog.
The evidence layer
Each output is linked to its source lines, the prompt version, the model and the person who approved it. Records are hash-chained, so a quiet edit anywhere breaks the chain.
✓ Chain verified · 4 of 4 records intact✕ Tampering detected at record 0142 · 2 records after it can’t be trusted
RECORD 0141
Program profile · LNCALC1
RECORD 0142
Rule · interest capped at P&Iinterest not capped
RECORD 0143
Dependency · LNPAY01 → LNCALC1
RECORD 0144
Plan · pilot wave approved
Illustration. In the product, anyone on your side can run the verification and export the full ledger for audit.
How we work
No big-bang rewrite. Use any vendor or AI tool for the conversion; CodeProva specifies the work before and proves it after.
01 · ASSESS
Dependency map, plain-English profiles, rules catalog, risk register and a phased roadmap.
02 · VERIFY
Old and new outputs compared. Every difference is grouped, explained in customer terms and signed off.
03 · WAVE BY WAVE
See what each wave touches before it starts, and prove it after it lands.
04 · ASSURE
Every later change to a business rule detected, tied to its approval and documented for audit.
Security
CodeProva installs into your own Kubernetes cluster with Helm. AI explanations use the model deployment in your own tenant, and the core analysis and verification need no AI at all.
YOUR CLOUD TENANT
KUBERNETES · YOUR CLUSTER
Proof on real banking code
An open-source card-banking application built to look like a real mainframe estate. Download the full modernization plan it produced.
Download the sample plan44
COBOL programs
~22.9k
lines of code
Technologies mapped
BUILT FOR
Core banking, cards and payments batch.
BUILT FOR
Payment posting, escrow and delinquency.
BUILT FOR
Policy admin, rating and claims.
BUILT FOR
Billing, metering and customer accounts.
Questions
No, by design. Use whichever vendor, partner or AI tool you prefer for the conversion. CodeProva maps what the legacy system does before you start, and afterwards proves the new system gives every customer the same result, explaining any difference down to the line of legacy code.
No. CodeProva runs in your Kubernetes cluster, and the only AI it calls is the model deployment in your own tenant, or none at all. We can work inside your environment under your access controls.
Every statement cites the file and line it came from, so a reviewer can check it in seconds. Nothing is final until a named expert signs it off, and converted code is proven by comparing old and new outputs on the same data.
No. For the assessment we need an export of the source: programs, copybooks, JCL, CICS definitions and DB2 DDL. Nothing is executed.
A modernization plan as a PDF and an interactive page: a decision for every program, a phased roadmap, the dependency map, the business rules catalog, a risk register and the evidence ledger behind it all.
The assessment is a fixed price agreed upfront, based on the size of the estate. Pilots and programs are scoped from the plan, so you always know what the next step costs before you commit.
Get in touch
Tell us what you run and what you want to change. We’ll reply within one business day, and can run the demo on a sample of your code.
Prefer email? misbahuddin110399@gmail.com