SlimePL/I — PL/I → Java bit-exact transpiler
Deterministic modernization of insurance, banking, and airline PL/I assets to Java.
Tens of millions of lines of PL/I run worldwide on IBM Enterprise PL/I, Open PL/I (Workday / Micro Focus), Iron Spring, and GnuPLi. SlimePL/I converts them to Java with bit-exact correctness, audit chains, and tamper detection — sharing S2-S5 / S7-S9 with SlimeCOBOL and SlimeMUMPS, with only S1 (PL/I FST) and S6 (Java emitter) being PL/I-specific.
- Auto-detects 5 dialects (IBM Classic / IBM Enterprise / Open PL/I / Iron Spring / GnuPLi)
- S9 bench: all 5 axes 100% (60/60) + S6 byte-exact regression 60/60 PASS(measured 2026-05-08)
- Production PL/I features — arrays / 2D arrays / structures / array-of-struct / internal PROC + RETURNS + recursion / SELECT/WHEN / DO WHILE/BY / 25+ BUILTINs
- stdin GET LIST + ON ENDFILE exception handling + file I/O (DCL FILE INPUT/OUTPUT TITLE / OPEN / CLOSE / READ FILE INTO / WRITE FILE FROM) all live
Implements the bit-exact + instant tamper detection required by financial and aviation audit. Auditors can re-verify "no information lost in conversion" after the fact — the world's first deterministic transpiler dedicated to PL/I (per our research).
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.
Headline metrics (measured 2026-05-08)
all 60 samples emit Java that compiles clean and runs as expected
actual/.java and expected/.java match exactly
dialect / token / javac / mutation / determinism — all PASS
IBM Classic / Enterprise / Open PL/I / Iron Spring / GnuPLi
core syntax → Rosetta-style algorithms → stdin/file I/O complete
SUBSTR / LENGTH / INDEX / TRIM / UPPER / SQRT / EXP / DATE / TIME and more
Market context — the world's PL/I legacy
| Insurance | Top US life and P&C insurers, reinsurance — SAS / IBM Enterprise PL/I in core business-logic layers. Calculation-heavy work fits PL/I's structured leanings better than COBOL. |
|---|---|
| Banking / finance | Major European and US banks: risk computation, transaction infrastructure, especially in Europe (parts of HSBC / Barclays / Deutsche Bank). Long-running PL/I maintenance. |
| Airlines / GDS | SABRE / Amadeus and similar GDS reservation systems carry 1970s-80s PL/I code. Real-time and complex structure handling are PL/I sweet spots. |
| Government / public | US IRS, parts of UK NHS, and other long-life-cycle government systems. |
| Market scale | Estimated tens of millions of LOC worldwide; tens of billions of dollars annual maintenance. Competitors (TSRI JANUS / Astadia / SoftwareMining) charge per-LOC at multi-million-dollar scale. SlimePL/I charges only the WASM converter tool — the generated Java is perpetually free to deploy. |
5-dialect auto-detection
S1 PL/I FST identifies dialect by fingerprint and propagates a dialect meta to downstream stages:
| IBM Classic | PROCEDURE OPTIONS (MAIN) / PROC OPTIONS form |
|---|---|
| IBM Enterprise PL/I | REENTRANT / REORDER attributes; the modern z/OS PL/I mainstream |
| Open PL/I | Workday (formerly Liant) / Micro Focus — OPENPLI marker |
| Iron Spring | Independent PL/I implementation on Linux — IRONSPRING marker |
| GnuPLi | GNU free implementation — /* GNUPLI */ marker |
Supported features (Phase 1-12)
| Control flow | IF/THEN/ELSE / SELECT/WHEN/OTHERWISE / DO TO BY (positive and negative step) / DO WHILE / nesting |
|---|---|
| Types | FIXED / FIXED DECIMAL(p,q) → BigDecimal / FLOAT → double / CHAR(n) → String |
| Data structures | 1D arrays / 2D arrays / structures (DCL 1 ... 2 ...) / array-of-struct (DCL 1 ITEM(N), 2 ...) |
| Procedures | internal PROC / CALL / RETURN / RETURNS (FIXED/FLOAT/CHAR) / recursion / parameter type inference / class-level static promotion of main-scope DCLs (so internal PROCs share state) |
| BUILTINs (25+) | SUBSTR / LENGTH / INDEX / TRIM / UPPER / LOWER / ABS / MAX / MIN / MOD / REPEAT / VERIFY / TRANSLATE / ROUND / FLOOR / CEIL / SQRT / EXP / LOG / SIN / COS / TAN / ATAN / DATE / TIME |
| Operators | arithmetic / comparison / logical & | / concat || / string equality auto-rewritten to Java .equals() (both literals and variables) |
| I/O | PUT LIST / PUT SKIP LIST / GET LIST (stdin) / ON ENDFILE (try/catch wrap) / File I/O (DCL FILE INPUT/OUTPUT TITLE / OPEN / CLOSE / READ FILE INTO / WRITE FILE FROM) |
Conversion example — production batch program
A typical "read file → process → write file" pattern compiles and runs unchanged:
/* PL/I source — file copy with ON ENDFILE */
FC: PROCEDURE OPTIONS (MAIN);
DCL IN FILE INPUT TITLE('/tmp/pli_in.txt');
DCL OUT FILE OUTPUT TITLE('/tmp/pli_copy.txt');
DCL LINE CHAR(200);
DCL DONE FIXED;
DCL N FIXED;
OPEN FILE(IN);
OPEN FILE(OUT);
ON ENDFILE(IN) DONE = 1;
DONE = 0; N = 0;
DO WHILE (DONE = 0);
READ FILE(IN) INTO (LINE);
IF DONE = 0 THEN
DO;
WRITE FILE(OUT) FROM (LINE);
N = N + 1;
END;
END;
CLOSE FILE(IN);
CLOSE FILE(OUT);
PUT LIST ('copied', N, 'lines');
END FC;
// Generated Java (deterministic, byte-exact)
public class M_58_file_copy {
public static void main(String[] args) {
SlimePLI.PLIFile IN = SlimePLI.openInput("/tmp/pli_in.txt");
SlimePLI.PLIFile OUT = SlimePLI.openOutput("/tmp/pli_copy.txt");
String LINE = "";
int DONE = 0, N = 0;
while (DONE == 0) {
try {
LINE = SlimePLI.readFile(IN);
} catch (SlimePLI.PLIEof __eof) {
DONE = 1;
}
if (DONE == 0) {
SlimePLI.writeFile(OUT, LINE);
N = N + 1;
}
}
SlimePLI.closeFile(IN);
SlimePLI.closeFile(OUT);
SlimePLI.putList("copied", N, "lines");
}
}
Algorithms verified end-to-end (Phase 1-12)
- SortingBubble sort / Quicksort (recursive, internal PROC sharing main-scope array)
- Number theorySieve of Eratosthenes (prime listing) / primality test / Euclidean GCD (recursive) / factorial / iterative Fibonacci
- String processingword counter / string reverse / palindrome / Caesar cipher / letter frequency / CSV parser
- ClassicsTowers of Hanoi (recursive) / 99 bottles / FizzBuzz / Collatz 3n+1 sequence
- NumericsLeibniz π estimation (1000 terms) / array sum/avg/min/max / matrix trace / running max
- Businesspayroll (array-of-struct + RETURNS + overtime calc) / grade book (5-tier IF/ELSE chain) / file copy / file grep / file uppercase
Audit fitness (financial / aviation)
- Bit-exactSame input → same sha256. Includes arrays, structures, recursion — fully deterministic.
- Byte-exact regression
make testdiffs actual/.java against expected/.java — 60/60 PASS(2026-05-08 baseline). Future emitter changes that introduce unintended output drift are detected immediately. - Audit chainIn-RAM SHA-256 monotonic chain. Append-only; never deleted. Plugs directly into the SlimeNENC shared S7 stage.
- Tamper detectionA single byte flip in any record blob is always reported as DETECTED.
- Hallucination detectionTrigram + bigram language model. Axis 2 rejects 100% of mutations.
- Build-time LLMLLM is used only at rule-construction time. Runtime is deterministic rules — basis of the 100.000% claim.
License model
| Charged | WASM/WASI converter tool (developer side) |
|---|---|
| Free | Generated Java source (customer asset, perpetual deploy) |
| Method | Ed25519-signed 144B license + 3-hop air-gap activation (financial / aviation audit-ready) |
| Parallelization (PSDP) | Not bundled with this product. See PSDP as a separate SKU under SlimeNENC. |
Resources
- Tech overviewSlimeNENC Technical Overview (PL/I chapter in preparation)
- Patent applicationJP 2026-046620 v15b — claim 11 (minimal-context constraints for legacy dialects), claim 14d (cross-system conversion including COBOL / MUMPS / PL/I) explicitly cover PL/I.
- Sibling productsSlimeCOBOL / SlimeMUMPS / SlimeJCL share the same S2-S5 / S7-S9 backbone
- BenchmarksS9 bench harness (5-axis correctness);
make testins6_java_emit_pl1/gives byte-exact regression 60/60
PL/I PoC / Materials Back to SlimeNENC family SlimeCOBOL SlimeMUMPS
