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).
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 99.9995% 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
