COBOLSTACK.COM
//CS521  EXEC PGM=COURSE,PARM='CS521'

Modernization track · Core · self-paced ~30h with labs (5 days as a cohort) · prerequisite: CS510 (or Java at that level) and CS120; CS130 and CS150 helpful

Transliteration & Equivalence Engineering: Converting COBOL to Java Byte for Byte, and Working Inside Converted Code

The conversion engineer’s course: convert CardDemo’s batch programs and two CICS programs to Java over an open emulation runtime and prove every output byte-identical to the SteelFrame run with zero declared differences; emulate numbers, storage, control flow, files, SQL and CICS semantics faithfully; read, diagnose and fix the part a tool cannot do; extend a generated-style codebase without breaking regeneration; and know when not to convert at all. Honest about "JOBOL" and about when the style is right — deadline-driven exits, SI benches, 100%-automatic conversion. 40 short videos (about 5h). Every lesson refers back to the AWS CardDemo application running live on SteelFrame — its COBOL source, batch jobs, CICS screens and VSAM/DB2 data — and every lab starts on the mainframe side: you run the legacy program under your own user to produce the golden, then make the Java match it.

Self-paced available Cohort

Open for enrollment now. The lesson videos for this course are in production — release order across the track: CS510 → CS520 → CS530 → CS521 → CS535 → CS500 → CS550 → CS525 → CS540 → CS545 — and every session below is published as its lessons and lab now and marked Coming soon until its videos are released.

Plans: Free individual at no cost, or Paid individual at $349 per course, one-time — code review, extra exercises, grading and priority support.

//SYLLABUS DD DISP=SHR

Syllabus

Every session ends in a lab on your own environment. Labs are machine-checked against expected outputs — you and your L&D team always know exactly where you stand.

The style, and when it is right

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. What transliteration is, why vendors disparage it and who buys it anyway (Japan’s Fujitsu exit, SI benches), with one CardDemo paragraph rendered three ways; the equivalence contract — byte-identical, zero declared differences, masks for jobid and timestamp only — and the run_capture golden envelope; anatomy of the cobol-rt emulation runtime proven against decode_records of real records; reading converted code and tracing a paragraph from COBOL to Java and back.

LAB Gate 1: convert CBACT01C with cs2j, build, run against the EBCDIC export and get an empty strict diff against your own READACCT capture.

Numbers are bytes, again

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. Zoned, packed and binary emulation with PIC-driven truncation, sign nibble and scale, shown in BROWSE HEX; ROUNDED, ON SIZE ERROR and intermediate precision reproduced against a COMPUTE chain run on SteelFrame; HALF_EVEN against COBOL truncation — the ledger that drifted a cent a day, found by the strict diff; edited pictures and MOVE to display fields byte by byte against the TRANREPT line.

LAB Gate 2: the CBACT04C interest run byte-identical — the interest transactions and generated ids equal to your INTCALC capture and after-image.

Storage semantics: groups, REDEFINES, OCCURS

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. Group MOVE as byte overlay vs field copy — the four strategies tool builders choose between and where they diverge, in hex; REDEFINES as views over one buffer decoded both ways against decode_records; OCCURS, DEPENDING ON, SEARCH and SEARCH ALL emulation including the unsorted-table misbehaviour; copybooks to classes with cpy2java and what the layout IR cannot know.

LAB Gate 3: CBTRN02C’s data division and posting control break converted — 38 rejects and the posting counts byte-identical to your POSTTRAN capture.

Control flow: PERFORM, GO TO and the state machine

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. PERFORM THRU, fall-through and exit paragraphs as a generated state machine; GO TO patterns — loops, exits, DEPENDING ON and the irreducible cases the transpiler reports; EVALUATE, nested IF, scope terminators and the subtle period that moves a branch; the PERFORM range that re-entered itself — the looping job cancelled on SteelFrame and the guard that reproduces the COBOL’s own behaviour.

LAB Gate 4: the posting chain end to end — CBTRN02C, CBACT04C and CBTRN03C converted; rejects, balances, interest and the 857-line report byte-identical.

Files, SQL and CICS in emulation

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. Sequential and VSAM emulation with FILE STATUS codes identical on the error paths, keys, REWRITE and START against vsam_info; EXEC SQL to JDBC with host-variable semantics, indicators and the −803 path; CICS verbs as runtime calls — RECEIVE and SEND MAP, READ and REWRITE, RETURN TRANSID with the COMMAREA bytes preserved — COSGN00C through cics_run_script beside the converted build; JCL steps as scripts with DD mapping and COND reproduced.

LAB Gate 5: COACTVWC converted — ten cics_run_script scenarios identical field by field, a FILE STATUS 23 path identical, the JCL-driven batch test identical.

Remediation: the part the tool could not do

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. Reading the conversion report — unsupported verbs, lost sources, Assembler islands (CardDemo’s two ASM members) — and locating each gap with search_source and inventory_scan; writing a missing program to the runtime’s calling convention and proving it against the original’s golden; performance traps — SQL in loops, allocation per record, I/O per field — profiled and fixed with the JESMSGLG elapsed as baseline, still byte-identical; the alnum-to-PIC 9 leading-digit quirk, reproduced because the contract is bytes.

LAB Gate 6: five seeded conversion defects in a provided converted build — rounding, scope, a REDEFINES view, a FILE STATUS code, a COMMAREA byte — all found with the strict diff and named by construct.

Working inside generated code

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. Anatomy of tool-generated projects — entities, services, tools, web, context objects, registries, scripts — and where one COBOL statement went; regenerate or hand-edit — the model-first rule and marked hand-edit regions, both proven against the changed COBOL’s new golden; tests around generated code — golden-file, record/replay against run_capture, parity between generations; quality gates that matter for generated code and the noise waived with a reason.

LAB Gate 7: a new report (accounts over 80% of limit) added model-first as CBACT05C under your HLQ, run on SteelFrame, converted, strict-equal and regeneration-safe.

From JOBOL toward Java, and the capstone

Coming soon The videos for this session are being produced; its lessons and lab are published here now.

Five videos. The refactoring ladder — runtime types, BigDecimal at the boundary, records, services (where CS520 begins) — one rung with the strict suite still green; the alternatives — rehost and COBOL-on-the-JVM, the IBM v LzLabs line, when not to convert; the equivalence report a sponsor signs with zero declared differences and resolvable capture ids; the capstone and the certificate.

LAB Capstone: a hidden variant of CBTRN02C and CBACT04C with an unsupported construct seeded — goldens captured, converted, remediated, strict diffs empty, remediation log written; the 25-question reading check over converted code (80%).

//SKILLS  DD DSN=AFTER.THIS.COURSE

After this course, you can

//CERT    DD DSN=CS521.CERTIFICATE,DISP=(NEW,CATLG)

How the certificate is earned

CobolStack Certificate — Transliteration & Equivalence Engineering (CS521) is issued from the lab harness’s own record of your runs — not from attendance. To earn it you must clear every gate below:

The certificate attests that you can run a COBOL-to-Java conversion to a zero-tolerance equivalence contract, remediate what the tool could not do and work inside converted code without breaking it — the role the Fujitsu-exit, SI-bench and conversion-utility postings describe — proven byte for byte against the mainframe’s own run.

The environment

Your seat is a private, full z/OS-compatible environment with the AWS CardDemo estate (COBOL, JCL, CICS/BMS, VSAM, DB2) and the SteelFrame oracle tools (run_capture, export_state, cics_run_script), beside your own Java 21 + Maven + PostgreSQL toolchain; the course’s clean-room cobol-rt runtime, cpy2java and cs2j teaching transpiler (Apache-2.0) in the browser — nothing to install, snapshot and reset per exercise. By the end of the course the lab harness will have verified: seven gates, each a byte-identical equiv --strict run against your own SteelFrame golden with no rules file allowed — CBACT01C, the CBACT04C interest run, CBTRN02C’s data division and control break, the posting chain end to end, COACTVWC with its JCL-driven test, a remediation lab of five seeded conversion defects, and a new report added model-first — plus the capstone: a hidden CardDemo variant converted byte-identical with a remediation log.