実機 IBM i 7.5 検証 / 2026-05-27 / SlimeRESCUE 特許ファミリ

SlimeRESCUE-AS400

CL 救済 実証済  データ救済 実証済  RPG / COBOL 救済 開発中

IBM i (AS/400) の *PGM バイナリから、元ソースファイルが失われていても現代コードとデータへ救済する。

IBM i の *PGM は z/Architecture のロードモジュールと根本的に異なり、 生の機械語ではなく TIMI / MI (Machine Interface = 機械独立の高水準中間表現) を encapsulate しています (native PowerPC は SLIC が隠蔽)。 そのため SlimeRESCUE-AS400 は「機械語の逆アセンブル」ではなく、 *PGM が抱える復元可能情報を使う設計です ― これが z/Arch 系より AS/400 で 有利に働く理由です。 AS/400 は便利さゆえ 20〜30 年無停止で稼働し続け、 構築 SIer の消滅やソース (FD・旧 PC・テープ) の喪失が特に多い一方で、 動いている *PGM 自体は機械上に生存しているからです。

3 層救済 ― 各層の実証状況を正直に

SlimeRESCUE-AS400 は *PGM の性質に応じて 3 層で救済します。 現時点の実機実証状況をそのまま記載します。

内容状態実機検証 (IBM i 7.5)
CL 救済 ✓ RTVCLSRC*PGM から CL ソースを完全復元 → SlimeCL で Rust / bash (将来 Java) へ 実証済 world-first 実証: 元ソースファイルが *PGM から RTVCLSRC (CPC0560) で実ソース・実変数名を復元 → SlimeCL → Rust が 実機 CALL と byte-exact 一致 (=425)
データ救済 ✓ 全物理ファイルのレコードを文字 (EBCDIC) / zoned / packed (COMP-3) / binary / float / DECFLOAT で byte-exact 吸出し 実証済 P10〜P19 で実機 member バイトと byte-exact 一致 (固定長 RECFM・COMP-3 符号・IEEE float・DECFLOAT16/34 含む)
RPG / COBOL 救済 ⧖ *PGM の observability (ILE debug view / MI テンプレート) からソース・名前を再構成 開発中 取得 API (QTEDBGSQteRetrieveModuleViews / QteRetrieveViewText) に 到達・バインド済。完走には debug-mode 文脈 (専用 / 対話) が必要 ― 共同検証で個別評価
正直な範囲表示。 現時点で実機実証済なのは CL 救済データ救済です。RPG / COBOL 救済は取得 API への到達まで確認済で 開発中です。RMVOBS で observability を剥がした *PGM は プログラム復元が不可になります (データ救済は引き続き可能)。実案件は 無償 PoC / 共同検証で個別に適用可否を見極めます。

実機 IBM i 7.5 での検証

机上ではなく 実機 IBM i 7.5 (公開 IBM i 環境、RZKH GmbH 運営) 上で end-to-end 検証しています。「IBM i で既に動く実物がある」状態です。

検証環境IBM i 7.5 (5250 / SSH、書込可ライブラリで実オブジェクト生成)
CL 救済 (world-first)RTVCLSRC PGM(...)CPC0560、回収ヘッダの「元ソースファイル」=空欄*PGM 内から復元した CL ソースのみから SlimeCL → Rust を生成し、実機 CALL の結果と byte-exact 一致 (00000000425)
データ救済対話画面再構成 + 全 CRUD (RCVF / 埋込 RUNSQL) + EBCDIC 固定長の zoned / packed COMP-3 / binary BE / IEEE float / DECFLOAT16・34 を実 member バイトと 無変換で byte-exact 照合
RPG / COBOL 取得 APIILE C ハーネスを CRTCMODCRTPGM ... BNDSRVPGM(QSYS/QTEDBGS) でバインドし実行到達。取得鎖 QteRetrieveModuleViewsQteRegisterDebugViewQteRetrieveViewText を確認 (完走には debug-mode 文脈)

動作例 (CL 救済 / 実機)

元ソースファイルを使わず、*PGM バイナリだけから現代 Rust を復活させた実機ログ:

== SlimeRESCUE-AS400 — *PGM binary -> recovered source -> SlimeCL -> Rust ==
  RTVCLSRC          : CPC0560   (object 上の元ソースファイル: <EMPTY>)
  live *PGM (IBM i) : 00000000425
  rescued->SlimeCL  : 00000000425
  => PASS  — *PGM (ソースファイル無し) -> RTVCLSRC -> SlimeCL -> Rust、
            byte-exact == 実機 IBM i = 425

※ 元の .clp は一切読んでいません。候補コードは *PGM オブジェクト 自体から RTVCLSRC が引き戻したソースだけから生成しています。

技術仕様 (詳細)

対象IBM i (AS/400 / iSeries / System i) の *PGM オブジェクトおよび物理ファイル
*PGM の性質TIMI / MI (機械独立の高水準中間表現) を encapsulate、native PowerPC は SLIC が隠蔽。生機械語の逆アセではなく復元情報経路を用いる
CL 復元RTVCLSRC (元ソースファイル不要、observability が既定保持されていれば *PGM から実ソースを復元) → SlimeCL で現代言語へ
RPG / COBOL 経路ILE debug view (DBGVIEW) / MI テンプレート由来の observability を、QTEDBGS source-debug API (QteRetrieveModuleViews / QteRetrieveViewText) で取得。debug-mode 文脈が必須 (CPF9541)
データ形式EBCDIC (cp037 系) / zoned decimal / packed COMP-3 / binary BE 2 の補数 / IEEE float (BE single・double) / DECFLOAT (decimal64・decimal128、DPD declet)
出力先言語SlimeCL → Rust / bash (単一バイナリ・no-external-lib)。将来 Java、SlimeNENC 資産連携
留意 (caveat)RMVOBS 等で observability を剥がした *PGM はプログラム復元不可 (データ救済は可)。プログラム復元は observability 状態に依存

適用シナリオ

  • 構築 SIer 消滅・ソース喪失: 20〜30 年無停止稼働の AS/400 で、元ソースが FD / 旧 PC / テープごと失われ、動く *PGM しか残っていない
  • RPG プログラマ退職・引継ぎ断絶: 改修できる人材が不在、現行業務だけが稼働し続けている
  • M&A 後の情報資産整理: 統合後にソース所在が不明、オブジェクトと物理ファイルしか残っていない
  • 監査・可視化要件: *PGM が実装している処理と業務データを可視化してドキュメント化
  • 業務継続を前提とした現代化: 現行 AS/400 を急に止めず、救済した資産を段階的に現代コードへ ― 継続と共存の文脈で

関連 / 価格

SlimeRESCUE-AS400 は Binary 起点プレミアム SKU。 ソース起点 SKU に対する単価設定 (代替手段の乏しさ + AS/400 ソース喪失案件の市場性) は SlimeRESCUE ファミリ共通方針に準じます。ボリュームディスカウント、SIer パートナー margin、 無償 PoC / 共同検証の条件は パートナーページ 参照、詳細は NDA 後開示。

関連: SlimeRESCUE ファミリー · SlimeRESCUE-VOS3 (z/Arch 系) · 国産オフコン modernization 共同検証