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.
A SlimeNENC-family tool that moves legacy code into a modern language without changing its meaning. A hand rewrite quietly drifts and causes incidents; SlimeNENC doesn't interpret meaning — it copies only the "skeleton" (structure), so the computed results stay identical to the original. It proves the behaviour first, so migration anxiety disappears. It copies only what it can, honestly, and isolates what it can't.
Hand rewrites drift on subtle numeric/exception differences (boundary conditions), and verifying that (old-vs-new testing) costs enormous labour. SlimeNENC faithfully mirrors language-specific traps, proves "zero divergence" via differential testing, backed by an independent reference implementation. The deliverable is a machine-checkable "certificate of behavioural invariance," not human UAT. No overstating; what it can't do isn't hidden.
Source is projected onto a Slot IR (language-independent structural intermediate form) and transcribed structure-preserving into the target. The statically-determined core is made bit-exact; dynamic, state-dependent parts are honestly isolated (isolate, don't confabulate). Backed by differential fuzzing plus formal methods where applicable, with deterministic verification a third party can reproduce locally.
Projection (π) of source as unique structure, not semantics. Primitives are modelled rigorously in bit-vector theory and formally verified over all inputs; composition/loops are covered by Csmith-style differential fuzzing — a two-tier guarantee. Non-reproducible computation (float/parallel/AI) goes to tier-③: meaning-equivalence + convergence + residual. "Where there is form, prove it in bytes; where there is none, in meaning. Lie on neither face."
📋 "Ask your AI at this level" copies this page's explanation with an instruction matched to the level you picked. Paste it into your own AI (Claude · GPT · Gemini · Grok) to dig deeper at that resolution.
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.
| Layer | What it does | Status | Validation (live IBM i 7.5) |
|---|---|---|---|
| CL rescue ✓ | RTVCLSRC recovers the full CL source from the *PGM → SlimeCL → 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 |
*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.
| Environment | IBM 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 rescue | Interactive-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 API | An ILE C harness was bound via CRTCMOD → CRTPGM ... BNDSRVPGM(QSYS/QTEDBGS) and reached the live API. The chain QteRetrieveModuleViews → QteRegisterDebugView → QteRetrieveViewText 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
| Target | IBM i (AS/400 / iSeries / System i) *PGM objects and physical files |
|---|---|
*PGM nature | Encapsulates TIMI / MI (machine-independent high-level IR); native PowerPC hidden by the SLIC. Not machine-code disassembly — uses the recoverable-information path |
| CL recovery | RTVCLSRC (no source file required; recovers real source from the *PGM when observability is retained, which is the default) → SlimeCL to modern languages |
| RPG / COBOL path | Observability 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 formats | EBCDIC (cp037 family) / zoned decimal / packed COMP-3 / binary BE two's-complement / IEEE float (BE single & double) / DECFLOAT (decimal64 & decimal128, DPD declets) |
| Output languages | SlimeCL → Rust / bash (single binary, no external libraries). Java later; integrates with SlimeNENC assets |
| Caveat | A *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
*PGMremains - 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
*PGMimplements 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
