プログラムが最後に使われた状態のままであるか、初期状態のままであるか、およびプログラムがどの呼び出し側に戻るかは、 使用する終了ステートメントによって異なる可能性があります。
メインプログラムでの実行を終了するには、メインプログラム内で STOP RUN または GOBACK ステートメントをコーディングする必要があります。STOP RUN は実行単位を終了して、メインプログラムおよび呼び出されたサブプログラムがオープンしたファイルをすべてクローズします。 制御権は、メインプログラムの呼び出し元 (一般にはオペレーティング・システム) に戻ります。GOBACK は、メインプログラム内で同じ影響を与えます。メインプログラム内で実行される EXIT PROGRAM は影響を与えません。
サブプログラムを終了するには、EXIT PROGRAM、GOBACK、または STOP RUN ステートメントを使用します。 EXIT PROGRAM または GOBACK ステートメントを使用する場合は、実行単位を終了せずに、サブプログラムの直接の呼び出し元に制御権が戻ります。呼び出し先プログラム内に次の実行可能ステートメントがない場合は、暗黙的な EXIT PROGRAM ステートメントが生成されます。STOP RUN ステートメントを使用してサブプログラムを終了する場合の影響は、メインプログラムの場合と同じです。つまり、実行単位内の COBOL プログラムがすべて終了され、メインプログラムの呼び出し元に制御権が戻ります。
サブプログラムは、EXIT PROGRAM または GOBACK で終了されると、最後に使われた状態 で残されるのが普通です。 サブプログラムが実行単位の中で次に呼び出されると、PERFORM ステートメントの戻り値が初期値にリセットされることを除けば、その内部値は終了時のまま残されます(それに対して、メインプログラムは呼び出されるたびに初期化されます)。