16.3.1 実行単位の終了方法
実行単位の終了方法には,次の三つがあります。
-
STOP RUN文によって終了する方法
-
実行単位中で最初に呼ばれたCOBOLプログラムのGOBACK文で終了する方法
-
CBLENDサービスルーチンを呼び出して終了する方法
(1) STOP RUN文による終了
COBOLプログラムでSTOP RUN文を実行すると,COBOLの実行環境が終了します。
プログラムが終了すると,閉じられていないファイルが閉じられるとともに,実行時に確保した仮想メモリが解放され,プロセスが終了します。
STOP RUN文による終了の例を次に示します。
(2) GOBACK文による終了
実行単位内で最初に呼び出されたCOBOLプログラムでGOBACK文を実行すると,COBOLの実行環境が終了します。
プログラムが終了すると,閉じられていないファイルが閉じられるとともに,実行時に確保した仮想メモリが解放され,プロセスが終了します。
GOBACK文による終了の例を次に示します。
(3) CBLENDサービスルーチンによる終了
COBOL副プログラムから他言語の主プログラムへ戻る場合,閉じられていないファイルのクローズ処理や,実行時に確保した仮想メモリの解放が実行されません。これらのCOBOL資源を解放するには,CBLENDサービスルーチンを呼び出す必要があります。
CBLENDサービスルーチンは,COBOLプログラムから呼び出すのではなく,他言語のプログラムから呼び出します。CプログラムからCBLENDサービスルーチンを呼び出す形式を,次に示します。
- 形式
extern int CBLEND(); /* CBLENDの外部参照宣言 */ CBLEND(); /* CBLENDの呼び出し */
CBLENDサービスルーチンの詳細は,「29.4.1 CBLEND」を参照してください。
(4) 注意事項
-
COBOL以外のプログラムでexit関数などを発行してプロセスを終了した場合,COBOL2002は実行環境の終了処理をしないで,OSの終了処理に任せます。
-
COBOLプログラムの呼び出し元が制御プログラムでない場合,呼び出し元のプログラムでは,COBOL実行環境を終了させるためにCBLENDサービスルーチンを呼び出さなければなりません。CBLENDサービスルーチンを呼び出さないでほかのCOBOLプログラムを呼び出した場合,結果は保証しません。