はじめに
COBOLでWeb APIを叩く?
そう聞いて「一瞬、時空が歪んだのか」と感じた方も多いのではないか。
COBOL――それは主に銀行や官公庁で動き続ける、“鉄壁のような存在”だ。
一方、REST APIはモダンなシステム間通信の要、クラウド時代の共通語とも言える。
では、この両者が手を取り合う方法は存在するのか?
実は、存在する。しかも、驚くほどシンプルな手段で。
それが、外部HTTPクライアントとの連携という現代の魔法だ。
今回は、COBOLと外部スクリプトを橋渡しすることで、COBOLからREST APIを利用する方法をステップ形式で解説していく。
1. REST APIを呼び出すにはCOBOLだけでは足りない
COBOL自体には、HTTP通信の手段がない。
ここが最初のハードルだ。しかし、回避不能な壁ではない。
COBOLにはCALL "SYSTEM"
という抜け道がある。これを使えば、外部プログラムを実行できる。
つまり、curlやPythonスクリプトなどを介してREST APIを叩くことが可能になるわけだ。
これは、ある種の“間接的対話”だが、システム連携においては極めて現実的な手段である。
2. 外部スクリプトによるAPIコール
まず、REST APIを呼び出す簡単なシェルスクリプトを用意する。LinuxやmacOSでは以下のようになる。
#!/bin/bash
curl -s https://jsonplaceholder.typicode.com/todos/1 > api_response.json
これは、テスト用の無料APIにGETリクエストを送り、結果をファイルに保存するだけのスクリプトだ。
Windows環境でも.bat
ファイルに応用できる。
ポイントは「ファイルに保存すること」。
COBOLは構造化されたJSONを直接理解できないため、まずはテキストファイルとして出力する必要がある。
3. COBOLプログラムでファイルを読み込む
次に、COBOL側でこのファイルを読み取る処理を記述する。
IDENTIFICATION DIVISION.
PROGRAM-ID. CALL-REST-API.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT API-RESPONSE ASSIGN TO "api_response.json"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD API-RESPONSE.
01 API-LINE PIC X(256).
WORKING-STORAGE SECTION.
01 WS-CMD PIC X(100)
VALUE "sh call_api.sh".
01 WS-EOF PIC X VALUE "N".
PROCEDURE DIVISION.
DISPLAY "Calling REST API via shell...".
CALL "SYSTEM" USING WS-CMD.
OPEN INPUT API-RESPONSE.
PERFORM UNTIL WS-EOF = "Y"
READ API-RESPONSE
AT END
MOVE "Y" TO WS-EOF
NOT AT END
DISPLAY "API RESPONSE: " API-LINE
END-READ
END-PERFORM.
CLOSE API-RESPONSE.
STOP RUN.
このコードは極めてストレートだが、“COBOLがcurlを間接的に利用する”という意味では破壊力がある。
まさに、レガシーがモダンを操作する感覚。
4. JSONをどう扱うか?COBOLの限界と割り切り
当然ながら、COBOLでネストされたJSONを構文解析するのは至難の業だ。
そのため、実運用では次のような戦略が現実的となる。
- JSONの整形・抽出はPythonなどに任せる
- COBOLは「結果として整形されたデータ」を読み込むだけにする
つまり、COBOLは最終的な業務処理ロジックの実行役であり、データ取得・整形の役割は周辺技術に分散させるのが賢い選択だ。
5. 応用アイデア。RESTだけじゃない
REST APIとの連携は一例に過ぎない。COBOLの周囲にはまだ多くの接続可能性が広がっている。
- Pythonスクリプトを通じた非同期通信
- KafkaやMQを用いたメッセージベース連携
- z/OS上のCICS Transaction Gatewayを利用したWeb API呼び出し
COBOLが「API利用の主役」になる必要はない。
“インターフェースの末端”としてデータの出入り口を担えばよいのだ。
まとめ
COBOLは古い。だが、“つながり方”次第で今も現役で戦える。
REST APIとの連携は、まさにその象徴的な実装だ。
COBOLから直接RESTは叩けないが、curlやPythonを経由することで、COBOLにWeb APIを話させることができる。
この構成には、ある種の矛盾、しかし同時に強烈な実用性がある。
「今どきCOBOLって……」と感じているあなたへ。
COBOLはまだ、世界に羽ばたける。
参考リンク
- COBOLで外部プログラムを呼び出す(CALL “SYSTEM” の使い方)
- curl コマンドリファレンス(公式マニュアル)
- JSONPlaceholder(無料のREST APIテストサービス)
- COBOLとPythonを連携する実践例(Qiita)
- COBOLとREST APIの現代的な接続戦略(Zenn)
コメント