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は引数として渡されたデータを変更する可能性があり、呼び出し元に影響を与えることがあります。