サブプロシージャーからの戻り

このセクションは通常のサブプロシージャーおよびリニア・メイン・プロシージャー に適用されます。

RETURN 命令が正常に実行された時、あるいはプロシージャーの最後の ステートメント (RETURN 命令ではない) が処理された時には、サブプロシージャーは 正常に戻ります。サブプロシージャーが自動記憶域にローカル・ファイルを持っている場合、 それらはサブプロシージャーの終了時にクローズされます。 それ以外の場合、呼び出しスタックからのサブプロシージャーの除去以外には、 プログラムのサイクル・メイン・プロシージャー (存在する場合) が終了するまで、 終了処置は実行されません。言い換えると、サイクル・メイン・プロシージャーの正常終了時に 実行される項目としてリストされているすべての処置は、メイン・プロシージャーの場合にのみ実行されます。

処理できない例外が起こった場合には、サブプロシージャーが異常終了し、 制御権は呼び出し元プロシージャーに戻されます。自動記憶域内のローカル・ファイルがすべてクローズされます。それ以外は、サイクル・メイン・プロシージャーが終了するまで これ以上の処理は起こりません。

モジュールがサイクル・モジュールで、メイン・プロシージャーが まったく呼び出されない (したがって、終了できない) 場合には、ファイルや、データ域などは クローズされません。ある サブプロシージャーでこれが起こるかもしれないと考えられる場合に は、サブプロシージャーの終了時に呼び出す終了プロシージャーを コーディングする必要があります。このことは、そのサブプロシージャーが制御仕様書に NOMAIN の指定された モジュール内にある場合に特に言えます。