Validated on a live IBM i 7.5 / 2026-05-27 / SlimeRESCUE patent family

SlimeRESCUE-AS400

CL rescue PROVEN  Data rescue PROVEN  RPG / COBOL rescue IN DEVELOPMENT

Rescue programs and data from an IBM i (AS/400) *PGM binary — even when the original source file is gone.

An IBM i *PGM is fundamentally different from a z/Architecture load module: it is not raw machine code but encapsulates TIMI / MI (the Machine Interface, a machine-independent high-level intermediate representation), with the native PowerPC hidden by the SLIC. So SlimeRESCUE-AS400 does not disassemble machine code — it uses the recoverable information the *PGM carries. That is precisely why AS/400 is more favorable than z/Arch here: AS/400 systems run unattended for 20–30 years, so the builder SIer is often gone and the source (floppies, old PCs, tapes) is especially often lost — yet the running *PGM survives on the machine.

Three rescue layers — status stated honestly

SlimeRESCUE-AS400 rescues in three layers, depending on what the *PGM carries. The table reflects the actual state validated on real hardware.

LayerWhat it doesStatusValidation (live IBM i 7.5)
CL rescue ✓ RTVCLSRC recovers the full CL source from the *PGMSlimeCL → Rust / bash (Java later) PROVEN World-first: from a *PGM whose source-file slot is empty, RTVCLSRC (CPC0560) recovered the real source and variable names → SlimeCL → Rust, byte-exact == the live CALL (= 425)
Data rescue ✓ Every physical-file record read byte-exact as character (EBCDIC) / zoned / packed (COMP-3) / binary / float / DECFLOAT PROVEN P10–P19: byte-exact against the live member bytes (fixed-length RECFM, COMP-3 sign, IEEE float, DECFLOAT16/34 included)
RPG / COBOL rescue ⧖ Reconstruct source & names from the *PGM observability (ILE debug view / MI template) IN DEV The retrieval API (QTEDBGS: QteRetrieveModuleViews / QteRetrieveViewText) is reached and bound. Completion needs a debug-mode context (dedicated / interactive) — evaluated case-by-case in a joint PoC
Honest scope. What is proven on real hardware today is CL rescue and data rescue. RPG / COBOL rescue is in development — the retrieval API has been reached. A *PGM whose observability has been stripped (RMVOBS) cannot have its program recovered (data rescue still works). Real cases are assessed individually via a free PoC / joint validation.

Validated on a live IBM i 7.5

Not on paper — end-to-end on a live IBM i 7.5 (a public IBM i operated by RZKH GmbH). There is a working artifact on IBM i already.

EnvironmentIBM i 7.5 (5250 / SSH; real objects created in a writable library)
CL rescue (world-first)RTVCLSRC PGM(...)CPC0560, with the recovered header's "original source file" empty. From the CL source recovered out of the *PGM alone, SlimeCL → Rust matched the live CALL byte-exact (00000000425)
Data rescueInteractive-screen reconstruction + full CRUD (RCVF / embedded RUNSQL) + EBCDIC fixed-length zoned / packed COMP-3 / binary BE / IEEE float / DECFLOAT16/34 compared byte-exact against the live member bytes with no conversion
RPG / COBOL APIAn ILE C harness was bound via CRTCMODCRTPGM ... BNDSRVPGM(QSYS/QTEDBGS) and reached the live API. The chain QteRetrieveModuleViewsQteRegisterDebugViewQteRetrieveViewText is confirmed (completion needs a debug-mode context)

Live example (CL rescue)

A real-hardware log of reviving modern Rust from the *PGM binary alone, using no source file:

== SlimeRESCUE-AS400 — *PGM binary -> recovered source -> SlimeCL -> Rust ==
  RTVCLSRC          : CPC0560   (original source file on object: <EMPTY>)
  live *PGM (IBM i) : 00000000425
  rescued->SlimeCL  : 00000000425
  => PASS  — *PGM (no source file) -> RTVCLSRC -> SlimeCL -> Rust,
            byte-exact == live IBM i = 425

The original .clp is never read. The candidate is built only from the source that RTVCLSRC pulls back out of the *PGM object itself.

Technical specification

TargetIBM i (AS/400 / iSeries / System i) *PGM objects and physical files
*PGM natureEncapsulates TIMI / MI (machine-independent high-level IR); native PowerPC hidden by the SLIC. Not machine-code disassembly — uses the recoverable-information path
CL recoveryRTVCLSRC (no source file required; recovers real source from the *PGM when observability is retained, which is the default) → SlimeCL to modern languages
RPG / COBOL pathObservability from the ILE debug view (DBGVIEW) / MI template, retrieved via the QTEDBGS source-debug API (QteRetrieveModuleViews / QteRetrieveViewText). Requires a debug-mode context (CPF9541 otherwise)
Data formatsEBCDIC (cp037 family) / zoned decimal / packed COMP-3 / binary BE two's-complement / IEEE float (BE single & double) / DECFLOAT (decimal64 & decimal128, DPD declets)
Output languagesSlimeCL → Rust / bash (single binary, no external libraries). Java later; integrates with SlimeNENC assets
CaveatA *PGM whose observability has been stripped (RMVOBS) cannot have its program recovered (data rescue still works). Program recovery depends on observability state

Where it applies

  • Builder SIer gone, source lost: an AS/400 running unattended for 20–30 years where the source vanished with the floppies / old PCs / tapes and only the live *PGM remains
  • RPG programmers retired, no handover: nobody left who can change it; only the running workload survives
  • Post-M&A asset cleanup: after consolidation the source location is unknown and only objects and physical files remain
  • Audit & visibility: document what the *PGM implements and what the business data holds
  • Modernization with continuity: don't stop the AS/400 abruptly — move rescued assets to modern code in stages, in a continuity / co-existence framing

Related / pricing

SlimeRESCUE-AS400 is a binary-start premium SKU. Its pricing relative to source-start SKUs (scarcity of alternatives + the AS/400 source-loss market) follows the common SlimeRESCUE family policy. Volume discounts, SIer partner margins, and free PoC / joint-validation terms are on the partners page; details disclosed under NDA.

Related: SlimeRESCUE family · SlimeRESCUE-VOS3 (z/Arch) · Japanese offcom modernization — joint validation