COBOLを可視化する背景
金融・保険・官公庁システムを中心に、今なお数百億行ものCOBOLコードが世界中で稼働しています。 これらのシステムは長年の改修を経て、元の設計者も去り、「動いているが誰も全体を把握していない」状態に陥りがちです。
モダナイゼーション(Javaへの移行・クラウドリフトなど)を進める際、最初の壁となるのが 「現行コードの構造理解」です。ソースを逐行読むだけでは全体像は見えません。 可視化ツールを活用して、まず依存関係の地図を作ることが出発点になります。
💡 本シリーズの対象読者
COBOLのソースが手元にあり、「どこで何を呼び出しているか」「どのプログラムが中心的な役割を担っているか」を把握したいエンジニア・アーキテクト向けです。COBOL自体の文法知識は基礎レベルで構いません。
COBOLプログラムの基本構造
COBOLプログラムは4つの Division で構成されます。 Javaのクラス構造に相当する「ひな型」を把握しておくことが可視化の前提となります。
可視化の主な対象は PROCEDURE DIVISION です。
ParagraphをJavaのメソッドと対応させると、Call Graphの概念をそのまま適用できます。
また、COPY句(外部コピーブックのインクルード)とCALL文(外部プログラム呼び出し)が
プログラム間依存の核心です。
| COBOL概念 | Java対応概念 | 可視化での役割 |
|---|---|---|
| Division | クラスのセクション | プログラム骨格の把握 |
| Section | クラス内グループ | Paragraphの論理まとまり |
| Paragraph | メソッド | Call Graphのノード |
| PERFORM文 | メソッド呼び出し | Call Graphのエッジ |
| CALL文 | 外部クラス呼び出し | プログラム間依存エッジ |
| COPY句 | import文 | コピーブック依存エッジ |
3段階の可視化アプローチ
本シリーズでは以下の3段階で可視化を進めます。 各段階は独立して使えますが、順に進めることで「全体→構造→詳細」の理解が積み重なります。
JavaシリーズとのJSONL共通化
本シリーズはJavaコード可視化シリーズの姉妹版です。 Jarvizが要求するJSONLフォーマット(6フィールド)はJava・COBOLを問いません。 「呼び出し元プログラム名」「呼び出し元Paragraph名」「呼び出し先プログラム名」「呼び出し先Paragraph名」の4情報をマッピングするだけで、 同じ3Dビューで表示できます。
これにより、JavaとCOBOLが混在する既存システム全体を1つのJSONLにまとめ、 言語をまたいだ依存関係を可視化することも可能です。
✅ JSONL共通フォーマットのメリット
言語依存のツールを使わずに済むため、COBOLパーサーが生成するデータとJavaのASM抽出データを同一のパイプラインで処理できます。PART 04・05 で詳述します。
シリーズ全体の構成
| 回 | タイトル | 内容 |
|---|---|---|
| PART 01 | はじめに(本記事) | シリーズ概要・COBOL構造とJava対応関係 |
| PART 02 | Division構造図 | 4 Divisionの可視化・COPY句・CALL依存図 |
| PART 03 | Paragraph Call Graph | PERFORM解析・静的解析・限界と対策 |
| PART 04 | 実践:JSONL変換 | パーサー選定・抽出スクリプト・JSONL出力 |
| PART 05 | Jarviz 3D可視化 | JSONLフォーマット詳解・Java版との差異 |
| PART 06 | まとめ | 3段階整理表・モダナイゼーションへの展望 |