特願 2026-046620 (請求項 11 / 14d — レガシー言語方言処理に PL/I を含む)

SlimePL/I — PL/I → Java bit-exact 変換

保険・銀行・航空のメインフレーム PL/I 資産を、決定論的に Java へ。

IBM Enterprise PL/I / Open PL/I (Workday・Micro Focus) / Iron Spring / GnuPLi で稼働する 世界数千万 LOC の PL/I 資産 を、 bit-exact + 監査チェーン + 改ざん検出 付きで Java へ移植。 COBOL / MUMPS と同じ S2-S5 / S7-S9 共通基盤、S1 (PL/I FST) と S6 (Java emitter) のみ言語固有。

  • 5 方言を自動検出 (IBM Classic / IBM Enterprise / Open PL/I / Iron Spring / GnuPLi)
  • S9 bench で 全 5 軸 100% (60/60) + S6 byte-exact regression 60/60 PASS(2026-05-08 実測)
  • 業務 PL/I の必須機能を完備 — 配列 / 2D 配列 / 構造体 / 配列構造体 / 内部 PROC + RETURNS + 再帰 / SELECT/WHEN / DO WHILE/BY / 25+ BUILTIN
  • stdin GET LIST + ON ENDFILE 例外処理 + ファイル I/O (DCL FILE INPUT/OUTPUT TITLE / OPEN / CLOSE / READ FILE INTO / WRITE FILE FROM) 完動

金融・航空業界が要求する bit-exact + 改ざん即検出 を実装。 「変換が情報を捨てていない」ことを監査人が事後再現できる、
業界初の PL/I 向け決定論的トランスパイラ (弊社調べ) です。

PL/I PoC・資料請求 →

主要計測値 (2026-05-08 実測)

60 / 60
javac compile + run
全 60 sample で生成 Java が clean compile + 期待通り実行
60 / 60
S6 byte-exact regression
expected/.java と actual/.java が完全一致
100.00 %
S9 全 5 軸
dialect / token / javac / mutation / determinism すべて全件 PASS
5 方言
自動検出
IBM Classic / Enterprise / Open PL/I / Iron Spring / GnuPLi
12 段階
Phase 1-12 機能実装
基本構文 → Rosetta 風 algorithm → stdin/ファイル I/O 完備
25+ 種
サポート BUILTIN
SUBSTR / LENGTH / INDEX / TRIM / UPPER / SQRT / EXP / DATE / TIME ほか

市場文脈 — 世界に眠る PL/I 資産

保険業界米大手生損保・再保険、SAS / IBM Enterprise PL/I の業務ロジック層に依然として PL/I コード稼働中。COBOL より構造化志向で計算系・統計系に多用。
銀行・金融欧米主要銀行のリスク計算・トランザクション基盤、特に欧州 (HSBC / Barclays / Deutsche Bank 等の一部) で PL/I の長期運用継続。
航空・予約SABRE / Amadeus 等の予約系基幹は 1970-80 年代の PL/I 由来コードを抱える。リアルタイム性と複雑な構造体処理が PL/I の得意領域。
政府・公的米国 IRS、英国 NHS の一部、その他公的機関の長期保守システム。
市場規模世界推定 数千万 LOC、保守コスト年間数十億ドル規模。競合 (TSRI JANUS / Astadia / SoftwareMining) は per-LOC 課金で数千万円〜億円スケール。SlimePL/I は WASM converter ツール課金のみ、出力 Java は永久無償デプロイ可

5 方言の自動検出

S1 PL/I FST が方言別 fingerprint で識別、後続パイプラインに dialect meta を伝搬:

IBM Classic IBM Enterprise Open PL/I Iron Spring GnuPLi
IBM ClassicPROCEDURE OPTIONS (MAIN) / PROC OPTIONS 形式
IBM Enterprise PL/IREENTRANT / REORDER 属性、現代の z/OS PL/I で主流
Open PL/IWorkday (旧 Liant) / Micro Focus、OPENPLI マーカー
Iron SpringLinux 上の独立 PL/I 処理系、IRONSPRING マーカー
GnuPLiGNU フリー実装、/* GNUPLI */ マーカー

サポート機能一覧 (Phase 1-12)

制御構造IF/THEN/ELSE / SELECT/WHEN/OTHERWISE / DO TO BY (正負両方) / DO WHILE / nested 構造
FIXED / FIXED DECIMAL(p,q) → BigDecimal / FLOAT → double / CHAR(n) → String
データ構造1D 配列 / 2D 配列 / 構造体 (DCL 1 ... 2 ...) / 配列構造体 (DCL 1 ITEM(N), 2 ...)
PROC内部 PROC / CALL / RETURN / RETURNS (FIXED/FLOAT/CHAR) / 再帰 / 引数型推論 / main scope DCL の class-level static promotion (内部 PROC 共有)
BUILTIN (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
演算子算術 / 比較 / 論理 & | / 連結 || / 文字列比較を Java の .equals() に自動変換 (literal / 変数双方)
入出力PUT LIST / PUT SKIP LIST / GET LIST (stdin) / ON ENDFILE (try/catch wrap) / ファイル I/O (DCL FILE INPUT/OUTPUT TITLE / OPEN / CLOSE / READ FILE INTO / WRITE FILE FROM)

変換例 — 業務 batch プログラム

典型的な「ファイル読込 → 加工 → ファイル書出」パターンが、PL/I そのままで Java として実走します:

/* 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");
    }
}

実証された algorithm 一覧 (Phase 1-12)

  • ソートBubble sort / Quicksort (再帰、内部 PROC が main の配列を共有)
  • 数論Sieve of Eratosthenes (素数列挙) / 素数判定 / Euclidean GCD (再帰) / 階乗 / Fibonacci 反復
  • 文字列word counter / 文字列 reverse / Palindrome 判定 / Caesar cipher / 文字頻度 / CSV parser
  • 古典Towers of Hanoi (再帰) / 99 bottles / FizzBuzz / Collatz 3n+1 sequence
  • 数値計算Leibniz 級数 π 推定 (1000 terms) / 配列 sum/avg/min/max / 行列 trace / running max
  • 業務payroll (構造体配列 + RETURNS 関数 + 残業計算) / grade book (5 段 IF/ELSE chain) / file copy / file grep / file uppercase

監査適合性 (金融・航空)

  • Bit-exact同一入力 → 同一 sha256。配列・構造体・再帰呼出すべて含めて完全決定論。
  • Byte-exact regressionmake test で actual/.java と expected/.java を diff、 60/60 PASS(2026-05-08 baseline)。将来の emitter 変更で意図しない出力差分が即検出される regression gate。
  • Audit chainRAM 内 SHA-256 monotonic chain。append-only、過去削除しない。SlimeNENC 共通基盤 (S7) に直接接続。
  • Tamper detection変換結果の record blob を 1 byte flip で書き換えたとき、verify_chain() が必ず DETECTED。
  • Hallucination 検出trigram + bigram 言語モデル。Axis 2 で全 mutation を 100% reject。
  • Build-time LLMLLM は変換規則の構築段階のみ。ランタイムは決定論ルールベース、99.9995% 主張の根拠。

License モデル

課金対象WASM/WASI converter ツール (開発者側)
非課金変換結果の Java ソース (顧客資産、永久無償デプロイ)
方式Ed25519 署名 144B license + 3-hop air-gap activation (金融・航空 audit 対応)
並列化 (PSDP)本製品には含まれません。SlimeNENC 配下の独立 SKU として PSDP を別途。

関連資料

  • 技術解説SlimeNENC Technical Overview (PL/I 章を準備中)
  • 出願明細特願 2026-046620 v15b の 請求項 11 (レガシー方言の最小文脈制約)、請求項 14d (COBOL / MUMPS / PL/I 等の処理系間変換) で PL/I を明示射程化
  • 兄弟製品SlimeCOBOL / SlimeMUMPS / SlimeJCL と同じ S2-S5/S7-S9 共通基盤
  • ベンチマークS9 bench harness (5 軸 correctness)、`s6_java_emit_pl1/Makefile` の `make test` で byte-exact regression 60/60

PL/I PoC・資料請求 SlimeNENC ファミリーへ戻る SlimeCOBOL を見る SlimeMUMPS を見る