COBOLからREST APIを呼び出す方法|レガシーとモダンが出会う場所

備忘録

はじめに

COBOLでWeb APIを叩く?
そう聞いて「一瞬、時空が歪んだのか」と感じた方も多いのではないか。

COBOL――それは主に銀行や官公庁で動き続ける、“鉄壁のような存在”だ。
一方、REST APIはモダンなシステム間通信の要、クラウド時代の共通語とも言える。

では、この両者が手を取り合う方法は存在するのか?

実は、存在する。しかも、驚くほどシンプルな手段で。
それが、外部HTTPクライアントとの連携という現代の魔法だ。

今回は、COBOLと外部スクリプトを橋渡しすることで、COBOLからREST APIを利用する方法をステップ形式で解説していく。


ログイン ‹ ぼっちエンジニアの備忘録 — WordPress
スポンサーリンク
スポンサーリンク

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はまだ、世界に羽ばたける。


参考リンク

コメント