カテゴリ: COBOL 更新日: 2025/10/10

COBOLのEXECステートメントとプログラム呼び出しを完全解説!初心者向けやさしい入門

EXECステートメントとプログラム呼び出しの仕組み
EXECステートメントとプログラム呼び出しの仕組み

先生と生徒の会話形式で理解しよう

生徒

「COBOLで他のプログラムを呼び出す方法ってあるんですか?」

先生

「はい、COBOLではEXECステートメントやCALL文を使って、別のプログラムを実行することができます。」

生徒

「EXECステートメントってなんだか難しそうですね…」

先生

「心配いりません。郵便の宛先を書くように『どこに』『何を』送るかを決めるだけなんですよ。それでは基本から説明していきましょう!」

1. EXECステートメントとは?

1. EXECステートメントとは?
1. EXECステートメントとは?

COBOLのEXECステートメントは、主に外部プログラムや特定のシステム機能を呼び出すために使われる命令です。特にIBMのメインフレーム環境では、EXEC CICSEXEC SQLなどの形式で利用されます。

ここでいう「外部プログラム」とは、自分が今書いているCOBOLプログラムとは別の場所にあるプログラムや、データベース操作を行う機能のことです。EXECは、そのような外部の処理を呼び出すための『伝票』のような役割を持っています。

例えば、EXEC SQLはデータベースに命令を送るために使われます。EXEC CICSはCICSというオンライン処理システムに命令を渡します。つまり、EXECは「この命令は特別な外部システムに送りますよ」という合図です。

2. EXECステートメントの基本構造

2. EXECステートメントの基本構造
2. EXECステートメントの基本構造

EXECステートメントは、必ずEXECで始まり、END-EXECで終わります。このEND-EXECは、どこまでが外部システムへの命令なのかを示す終わりのマークです。


EXEC SQL
    SELECT * FROM USER_TABLE
END-EXEC

この例では、SQLというデータベース言語をCOBOLの中から実行しています。

3. COBOLでのプログラム呼び出し(CALL文)

3. COBOLでのプログラム呼び出し(CALL文)
3. COBOLでのプログラム呼び出し(CALL文)

EXECステートメントと並んで重要なのがCALL文です。CALL文は、別のCOBOLプログラムを呼び出して実行するための命令です。これは、家の中から電話をかけて友達に「これお願い!」と頼むようなイメージです。


CALL 'SUBPGM1'
    USING WS-NAME WS-AGE
END-CALL

ここでは、SUBPGM1というプログラムを呼び出し、WS-NAMEWS-AGEという変数を渡しています。

4. EXECステートメントとCALL文の違い

4. EXECステートメントとCALL文の違い
4. EXECステートメントとCALL文の違い

EXECステートメントは、特定の外部システム(データベースやオンライン処理)とやり取りするために使われます。一方で、CALL文はCOBOLの別プログラムを実行するために使われます。

  • EXEC → 外部システムや専用機能を呼び出す(例:SQL、CICS)
  • CALL → 他のCOBOLプログラムを呼び出す

5. プログラム呼び出しの流れ

5. プログラム呼び出しの流れ
5. プログラム呼び出しの流れ

プログラム呼び出しの流れを理解するために、宅配便のやり取りに例えてみましょう。

  1. 送り主(呼び出し元プログラム)が「荷物」(データ)を準備する
  2. 配送員(CALLやEXECの命令)が荷物を届ける
  3. 受け取り側(呼び出されるプログラム)が荷物を受け取り、作業を行う
  4. 結果を送り返す(必要に応じて)

このように、EXECやCALLは単なる命令ではなく、プログラム同士の橋渡しをする重要な役割を担っています。

6. 実行例

6. 実行例
6. 実行例

ここでは、CALL文を使って別プログラムを呼び出す簡単な例を示します。


IDENTIFICATION DIVISION.
PROGRAM-ID. MAINPGM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NAME PIC X(20) VALUE "山田太郎".
01 WS-AGE  PIC 9(3) VALUE 30.
PROCEDURE DIVISION.
    CALL 'HELLOPGM' USING WS-NAME WS-AGE
    DISPLAY "メインプログラムに戻りました。"
    STOP RUN.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOPGM.
DATA DIVISION.
LINKAGE SECTION.
01 LK-NAME PIC X(20).
01 LK-AGE  PIC 9(3).
PROCEDURE DIVISION USING LK-NAME LK-AGE.
    DISPLAY "こんにちは、" LK-NAME "さん。年齢は" LK-AGE "歳ですね。"
    EXIT PROGRAM.

こんにちは、山田太郎さん。年齢は 30 歳ですね。
メインプログラムに戻りました。

7. 注意点とベストプラクティス

7. 注意点とベストプラクティス
7. 注意点とベストプラクティス

初心者がEXECステートメントやCALL文を使うときは、以下のポイントを意識しましょう。

  • EXECは必ずEND-EXECで閉じること
  • CALLで渡すデータの型と順番は、呼び出されるプログラムと一致させること
  • 外部システムとやり取りする場合は、事前にそのシステムの仕様を確認すること
  • デバッグ時には、どのタイミングでプログラム間のやり取りが行われているかをログで確認すると理解が深まります
カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法