SlimeJCL — JCL → Spring Batch 変換
SlimeNENC のコンパニオン製品。COBOL バッチに必須随伴する JCL を、SlimeNENC ノウハウ最大活用で Spring Batch / Workflow へ bit-exact 移行。
COBOL を bit-exact で Java 化しても、JCL (起動・I/O・スケジュール) を顧客側に丸投げすれば 移行プロジェクトは 6 ヶ月 → 18 ヶ月 に膨張、SlimeNENC の bit-exact 主張も「JCL 側の挙動差」で台無しになります。 SlimeJCL は JCL を bit-exact で Spring Batch 化 することで、「移行プロジェクト 1 ツール完結」を実現します。
SlimeJCL は SlimeNENC のアクティブライセンス保有を販売条件 とする upsell 専用プロダクトです。 技術的・IP 的に SlimeNENC との連携を前提として設計されており、SlimeJCL 単体販売は行いません。 SlimeNENC 未契約の方は、まず SlimeNENC のご導入をご検討ください。
主要計測値 (Phase 4 完成時の目標)
(SlimeNENC Subset A の 99.9995% より緩い、JCL 構文多様性のため)
IBM z/OS / Fujitsu FNJCL / Hitachi VOSJCL / NEC ACOS NCRP
SlimeNENC corpus 内に既に取得済 (CBSA + carddemo + Defects Suite + Portfolio + BankDemo)
SlimeNENC Subset A の 9 ステージ構造を JCL に流用
lex プレフィックス map に 1 行 + 属性語彙 5-10 個 (parser 不変)
SlimeNENC の S2-S5/S7-S8 を JCL に再利用
SlimeNENC との関係 — 3 段ロケット
| Tier | 製品 | 前提 |
|---|---|---|
| 1 | SlimeNENC (Subset A 他言語変換) | 単独可、新規顧客 OK |
| 2 | SlimeNENC + PSDP (Subset B 同一言語並列化) | SlimeNENC ライセンス |
| 3 | SlimeJCL (本プロダクト) | SlimeNENC アクティブライセンス必須 |
land-and-expand:
[Year 1] SlimeNENC で land — COBOL → Java 移行 [Year 1.5-2] SlimeJCL upsell — JCL → Spring Batch、COBOL+JCL ペア完結 [Year 2+] PSDP 適用 — bit-exact 並列化で夜間バッチ短縮 ↓ Cloud-native 化 (Spring Batch → AWS Step Functions / Airflow)
JCL Slot IR 設計 — SlimeNENC ノウハウ最大活用
SlimeNENC Subset A の Slot IR (Core64 + Ext32) と同じ思想で、JCL を 言語非依存中間表現 に正規化:
| JCL 構文 | Slot ID | 内容 |
|---|---|---|
//<jobname> JOB ... | JCL-JOB | ジョブ宣言 (CLASS, MSGCLASS, TIME, NOTIFY, COND 等) |
//<step> EXEC PGM=<prog> | JCL-EXEC-PGM | プログラム実行ステップ |
//<step> EXEC PROC=<proc> | JCL-EXEC-PROC | プロシージャ呼出 |
//<dd> DD DSN=... | JCL-DD-DSN | データセット参照 (DISP/UNIT/VOL/SPACE/DCB) |
//<dd> DD SYSOUT=... | JCL-DD-SYSOUT | 出力スプール |
// JCLLIB ORDER=... | JCL-LIB | プロシージャライブラリ参照 |
// SET name=value | JCL-SET-VAR | symbolic parameter 設定 |
// IF cond THEN / ENDIF | JCL-IF | 条件実行 (z/OS 拡張) |
各 Slot は Core48 + Ext16 = 64 bit、SlimeNENC と統合可能な audit chain を提供。
9 ステージ Pipeline (JS1-JS9)
SlimeNENC Subset A の 9 ステージ構造を JCL に流用、新規実装は emitter (JS6) と方言別 Lex のみ:
(SlimeNENC と統合)
(DD shuffle 等)
4 大 JCL 方言 fingerprint
JCL の方言差は 行頭プレフィックス + 属性語彙 が中心 (COBOL のような parser 全体差は無し)。 新方言追加コストは lex プレフィックス map に 1 行 + 属性語彙 5-10 個 (約 30 分、parser 不変)。
| 方言 | 主要 marker | 校正状態 |
|---|---|---|
| IBM z/OS JCL | // <name> JOB ... (// + 空白)、EXEC PGM=、EXEC PROC=、DD DSN=、DD SYSOUT=、JCLLIB ORDER=、&SYSUID、IEFBR14、SYSIN DD *、終端 /* /& | ✅ 既存 233 file の大半が IBM z/OS、Phase 4-3 で bit-exact 検証予定 |
| Fujitsu FNJCL (NetCOBOL) | /JOB (1 スラッシュ、IBM の // と区別)、/EXEC PGM=、/DD DSN=、/PROC、/AIM ... (Fujitsu トランザクション基盤) | △ 公開仕様ベース、PoC で校正中 |
| Hitachi VOSJCL | \JOB (バックスラッシュ)、\EXEC PGM=、\FD ファイル定義、KFSB*****-{E,I,W} MSG ID、OpenTP1 連携 \TRN ... | △ 公開仕様ベース、PoC で校正中 |
| NEC ACOS JCL (NCRP) | \$JOB または ;;JOB、\$EXEC PGM=、\$DD / \$FD、NCRP 言及 | △ 公開仕様ベース、PoC で校正中 |
注: JCL の 1 行目 (JOB 文) のプレフィックスで 99% は判別可。残り 1% は属性パターン (CLASS/DISP の語彙) で確定。 SlimeNENC の dialect-detect 14 値同様、dialect-transpile coverage は IBM z/OS が主、Fujitsu/Hitachi/NEC は fingerprint 段階で実変換は PoC 校正中。
Spring Batch 変換マッピング表 (主要)
| JCL 構文 | Spring Batch 対応 |
|---|---|
// JOB CLASS=A,MSGCLASS=X,TIME=1440 | @Bean public Job <name>Job() + JobParameter("class", "A") + timeout 設定 |
// EXEC PGM=COBOL_PGM | Step + Tasklet calling CobolPgm.main() (SlimeNENC 変換済) |
// EXEC PROC=MYPROC | JobBuilder.flow().next(myProcSteps) |
// DD DSN=PROD.FILE,DISP=SHR | FlatFileItemReader + RandomAccessFile mode |
// DD DSN=PROD.OUT,DISP=(NEW,CATLG,DELETE) | FlatFileItemWriter + AfterJob listener |
// DD SYSOUT=* | Logback appender |
// DD * (instream) | String literal in @Bean |
COND=(8,LT) | JobExecutionDecider (前 step exit code 評価) |
// JCLLIB ORDER=PROD.PROCS | @Configuration class scan path |
// SET HLQ=AWS.M2 | @Value("${jcl.hlq:AWS.M2}") |
&SYSUID | System.getProperty("user.name") |
IEFBR14 (NULL prog) | () -> RepeatStatus.FINISHED (no-op tasklet) |
既存検証コーパス (別取込不要)
SlimeJCL 検証用 JCL は 既に SlimeNENC corpus 内に 233 files 取得済 (Phase 1+2 で COBOL と一緒に clone した repos に同梱):
| IBM CBSA | 102 file (EPL 2.0、IBM 公式銀行サンプル CICS+DB2+BMS) |
|---|---|
| AWS carddemo | 55 file (Apache 2.0、AWS Mainframe Modernization 公式) |
| Defects Suite | 49 file (MIT、各 .CBL に対応する JCL ペア) |
| Portfolio Mgmt | 15 file (sentientsergio、IBM z/OS 拡張) |
| Rocket BankDemo | 12 file (Rocket EULA、内部 QA のみ) |
| 合計 | 233 file、公開可 layer のみで 221 file |
典型ユースケース
| 金融バッチ | 夜間勘定系バッチを SlimeNENC (COBOL→Java) + SlimeJCL (JCL→Spring Batch) ペアで bit-exact 移行。1 ツール完結で工数 50% 削減、監査証跡 (audit chain) 一貫保持。 |
|---|---|
| クラウド移行 | z/OS → AWS Mainframe Modernization / IBM Cloud / Azure 移行で、JCL 部分を Spring Batch 化することで Cloud-native コンテナ実行可能に。 |
| Cron / Workflow 移行 | Spring Batch から更に Apache Airflow / Argo Workflow / AWS Step Functions へ展開。SlimeJCL 出力 Spring Batch 経由で段階移行。 |
| 監査要件下のバッチ統合 | 変換チェーン全体 (JCL→Spring Batch + COBOL→Java) が SlimeNENC audit chain に統合、監査人が事後検証可能。 |
提供時期 / 価格
| 提供開始 | 2026-Q3 予定 (Phase 4-1〜4-5 完了後) |
|---|---|
| ライセンス形態 | SlimeNENC ライセンスへの アドオン年額契約 (単体販売不可) |
| 価格目安 | SlimeNENC ベースライセンスフィーの 30-50% (要市場検証、確定は提供開始時) |
| 移行 PoC | SlimeNENC + SlimeJCL ペアでの PoC は別途プロフェッショナルサービス提供 |
| 事前申込 | SlimeNENC 既存契約者向けに 2026-Q2 から事前申込受付 (優先提供枠) |
Phase 4 ロードマップ
- Phase 4-1 (1 ヶ月)JS1 JCL Lex (IBM z/OS) 実装、233 file 全件 lex pass、Slot IR スキーマ確定
- Phase 4-2 (2 ヶ月)JS6 Spring Batch emitter 雛形、233 file から 50 file を Spring Batch 化、javac PASS 率測定
- Phase 4-3 (3 ヶ月)bit-exact 比較フレームワーク (元 JCL job 実行 vs Spring Batch 実行)、全 233 file で 99.95%+ 達成
- Phase 4-4 (4-5 ヶ月)Fujitsu/Hitachi/NEC JCL 方言 lex 追加 (PoC で校正)、Audit chain 連携、Mini-PSV 適用
- Phase 4-5 (6 ヶ月)公開ベンチマーク (CBSA + carddemo の JCL を SlimeJCL で変換 + 動作検証)、営業武器化、提供開始
関連製品
事前申込 (SlimeNENC 既存契約者向け) SlimeNENC (Subset A) を見る PSDP (Subset B) を見る 他の製品を見る
