Point at any program to see what a change would touch

The proof layer for legacy modernization

Modernize COBOL with proof, not promises.

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

COBOLCopybooksJCL & PROCsCICSDB2 SQLIMS DL/IIBM MQVSAMCICS CSDDB2 DDL

Overview

CodeProva in about a minute.

Why modernization needs proof, and how CodeProva provides it.

Verify any conversion

Prove nothing changed for your customers.

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

CAUSEACCOUNTSNET IMPACTLEGACY CODE
Small-business accounts charged 0% instead of the default rate448−$41,304.58CBACT04C.cbl:437
Negative balances handled differently607+$3,371.73CBACT04C.cbl:464
One-cent differences: legacy truncates, new system rounds2,002+$20.02CBACT04C.cbl:464
Inactive accounts missing from the new output28—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

The rules that run your business live in code nobody wants to touch.

Interest calculations, delinquency notices, escrow shortages. Decades of decisions written in COBOL, usually documented nowhere else.

01

The experts are leaving

The people who know why a program does what it does are retiring, and their knowledge leaves with them.

02

Nobody can see the blast radius

One copybook can feed dozens of programs. Without a map, every change is a guess and every estimate is padded.

03

AI alone is not auditable

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

Point at a line. Read it in plain English.

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.

LNCALC1.cbl · Compute monthly interest dueCOBOL · called subprogram
18 COPY LNMASTR.

Line 18 · shared layout

Pulls in the loan master record.

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.

Source LNCALC1.cbl:18Blast radius · 4 programs
20PROCEDURE DIVISION USING LOAN-MASTER-REC LK-INTEREST.

Line 20 · who calls this

Called by LNPAY01, the nightly payment run.

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.

Caller LNPAY01.cbl:80Dynamic CALL resolved
22 ACCEPT WS-TODAY FROM DATE

Line 22

Reads today’s date, with a two-digit year.

COBOL’s DATE gives YYMMDD, so the century has to be guessed. The next block does exactly that.

Source LNCALC1.cbl:22
23 IF WS-TODAY-YY < 50
24 MOVE 20 TO WS-CENTURY
25 ELSE
26 MOVE 19 TO WS-CENTURY
27 END-IF

Lines 23–27 · business rule · timing

Years 00–49 are read as 20xx, 50–99 as 19xx.

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.

Risk · fails in 2050Rule · LNCALC1.cbl:23
28 COMPUTE WS-MONTHLY-RATE = LM-NOTE-RATE / 1200

Line 28

Turns the yearly rate into a monthly one.

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.

Source LNCALC1.cbl:28
29 COMPUTE LK-INTEREST ROUNDED =
LM-PRIN-BAL * WS-MONTHLY-RATE

Line 29

Interest due = balance × monthly rate.

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.

Source LNCALC1.cbl:29Test case generated
30 IF LK-INTEREST > LM-PI-PMT
31 MOVE LM-PI-PMT TO LK-INTEREST
32 END-IF

Lines 30–32 · business rule · money

Interest is never more than the scheduled payment.

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.

Owner must confirmRule · LNCALC1.cbl:30
33 GOBACK.

Line 33

Hands the interest back to LNPAY01.

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.

Pilot · LNPAY01 + LNCALC1

Plain-English reading

Point at any line of code on the left.

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.

12 rules found in the estateEvery claim cites a line

The assessment

Every program gets a decision, and a reason.

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

LNINQ01LNMENULNPAYH1

Translate with AI, then prove it with old-versus-new testing.

Convert with expert review · 3

LNCALC1LNESC01LNPAY01

Money rules inside. A business expert confirms them before sign-off.

Unblock first · 1

LNDLQ01

Calls a program whose source wasn’t supplied. We ask for it before scoping.

Confirm and retire · 1

LNOLD99

Nothing calls it. Confirm with run history, then drop it from scope.

A roadmap where each stage proves the last

STAGE 0

Close the gaps

Answer the open questions so LNDLQ01 and LNOLD99 can be scoped or removed.

STAGE 1 · PILOT

LNPAY01 + LNCALC1

Proven by running old and new on the same input and comparing LOANMAST and PAYREJ record by record.

STAGE 2

Online screens and services

Terminal screens become services and a web front end, proven by replaying recorded journeys.

STAGE 3

Expert-reviewed core

Programs with sensitive rules, converted only after their owners sign off the rules catalog.

The evidence layer

Every AI decision leaves a receipt.

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

source
LNCALC1.cbl:1–33
prompt
profile v1.3
review
Tech lead ✓
prev
9c1e…04af
hash
3b7d…e912

RECORD 0142

Rule · interest capped at P&Iinterest not capped

source
LNCALC1.cbl:30
prompt
rules v2.0
review
Lending SME ✓
prev
3b7d…e912
hash
a04f…71c3recomputed ≠ a04f…71c3

RECORD 0143

Dependency · LNPAY01 → LNCALC1

source
LNPAY01.cbl:80
method
parser, no AI
review
Tech lead ✓
prev
a04f…71c3
hash
58e2…0bd4

RECORD 0144

Plan · pilot wave approved

scope
LNPAY01, LNCALC1
basis
0141–0143
review
Program owner ✓
prev
58e2…0bd4
hash
c7a9…2f10

Illustration. In the product, anyone on your side can run the verification and export the full ledger for audit.

How we work

Start small and fixed-price. Each step earns the next.

No big-bang rewrite. Use any vendor or AI tool for the conversion; CodeProva specifies the work before and proves it after.

01 · ASSESS

A plan you can sign

Dependency map, plain-English profiles, rules catalog, risk register and a phased roadmap.

02 · VERIFY

Every conversion, proven

Old and new outputs compared. Every difference is grouped, explained in customer terms and signed off.

03 · WAVE BY WAVE

Impact before each change

See what each wave touches before it starts, and prove it after it lands.

04 · ASSURE

Continuous assurance

Every later change to a business rule detected, tied to its approval and documented for audit.

Security

Your code never leaves your walls.

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

CodeProva API
Analysis workers
Postgres + pgvector
Evidence ledger
↕private endpoint · managed identity
Your Azure OpenAI deployment
  • No code leaves. Network policy limits outbound traffic to your own AI endpoint.
  • Nothing is executed. The assessment reads source exports only. No mainframe access needed.
  • Humans sign off. No AI output is final until a named expert approves it.
  • Repeatable. Same code in, same plan out, every time.

Proof on real banking code

We ran CodeProva on AWS CardDemo.

An open-source card-banking application built to look like a real mainframe estate. Download the full modernization plan it produced.

Download the sample plan

44

COBOL programs

~22.9k

lines of code

Technologies mapped

CICSDB2IMSMQVSAMJCL

BUILT FOR

Banks

Core banking, cards and payments batch.

BUILT FOR

Mortgage servicers

Payment posting, escrow and delinquency.

BUILT FOR

Insurers

Policy admin, rating and claims.

BUILT FOR

Utilities

Billing, metering and customer accounts.

Questions

What risk and IT teams ask first

Do you convert the code?

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.

Does our code leave our environment?

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.

What if the AI gets something wrong?

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.

Do you need access to our mainframe?

No. For the assessment we need an export of the source: programs, copybooks, JCL, CICS definitions and DB2 DDL. Nothing is executed.

What do we get at the end of the assessment?

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.

How is it priced?

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

Let’s look at your estate.

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

Opens your email app with the message ready to send.