他のプログラムへの制御の移動

手続き部では、プログラムは他のプログラム (通常 COBOL 用語ではサブプログラムと呼ばれる) を呼び出し、 その呼び出されたプログラムからさらに別のプログラムを呼び出すことができます。 別のプログラムを呼び出すプログラムを呼び出し側プログラムといい、 そのプログラムが呼び出すプログラムを呼び出し先プログラムといいます。

呼び出し先 ILE COBOL プログラムは、手続き部の非宣言部分の先頭から実行を開始します。 呼び出し先 ILE COBOL プログラムに手続き部がない場合、または手続き部の非宣言部分がない場合には、 単に呼び出し側 ILE COBOL プログラムに戻るだけになります。

呼び出し先プログラムの処理が終了すると、制御を呼び出し側プログラムに戻すか、 または実行単位を終了することができます。 STOP RUN が出された場合、および最も近い管理境界がハード管理境界である場合には、実行単位が終了します。 最も近い管理境界がソフト管理境界であった場合、 制御はその管理境界の呼び出し側プログラムに戻されますが、実行単位は活動状態のままです。

呼び出し先プログラムは、 直接的にも、間接的にも (たとえば、プログラム X がプログラム Y を呼び出し、 プログラム Y がプログラム Z を呼び出し、 さらにプログラム Z がプログラム X を呼び出す) その呼び出し側プログラムを呼び出すことはできません。 呼び出し先プログラムがその呼び出し側プログラムを呼び出すことを、再帰呼び出しといいます。 ILE COBOL では、非再帰的なメイン・プログラムまたはサブプログラム において再帰呼び出しは実行できません再帰呼び出しが可能なのは、再帰呼び出しされるプログラムの PROGRAM-ID 段落 で RECURSIVE 文節をコーディングしたときに限られます。PROGRAM-ID 段落に RECURSIVE 文節 がコーディングされていない COBOL プログラムの再帰呼び出しを行うと、 実行時エラー・メッセージが生成されます。