【COBOL】CALL文で他のプログラムやサブルーチンを呼び出す方法

COBOLのCALL文は、他のプログラムやサブルーチンを呼び出すために使用されます。モジュール性を高め、コードを再利用可能にする便利な機能なので、覚えておくと重宝します。

CALL文の基本構文

CALL program-name USING data-item-1 data-item-2 ...

program-name: 呼び出すプログラムやサブルーチンの名前を指定します。
USING: CALL文のキーワードで、呼び出し先プログラムに渡すデータ項目を指定します。
data-item-1, data-item-2, …: USING節で指定されたデータ項目のリストです。これらのデータ項目は呼び出し先プログラムで受け取られます。

引数の受け渡し

CALL文は、USING節を使用して引数を渡します。呼び出し先プログラムでは、受け取る変数をUSING節で指定した順序と型で定義する必要があります。

呼び出し先プログラムの定義

CALL文で呼び出すプログラムは、PROGRAM-IDで宣言されている必要があります。また、呼び出し先のプログラムで受け取るデータ項目も適切に定義されている必要があります。

手続き分割

CALL文を使用するプログラムは、IDENTIFICATION DIVISION、DATA DIVISION、およびPROCEDURE DIVISIONで構成されます。

サブルーチン呼び出しの戻り

CALL文が終了すると、制御は呼び出し元の次の文に移ります。呼び出し先プログラムの実行が終了した後、制御は呼び出し元に戻ります。

サンプルコード

IDENTIFICATION DIVISION.
       PROGRAM-ID. CallerProgram.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 Input-Data PIC X(10) VALUE 'Hello'.

       PROCEDURE DIVISION.
           CALL CalledProgram USING Input-Data.
           DISPLAY 'Returned Data: ' Input-Data.
           STOP RUN.

上記の例では、CallerProgramはCalledProgramを呼び出し、Input-Dataを渡しています。CalledProgramは引数として渡されたデータを変更する可能性があり、呼び出し元に影響を与えることがあります。