ILE COBOL プログラムからの戻りの例

次の例は、名前付き、*NEW、および *DFTACTGP の各活動化グループを組み合わせた時に、EXIT PROGRAM、STOP RUN、および GOBACK がどのように作用するかを示すものです。

図 54. 1 つの名前付き活動化グループにおける EXIT PROGRAM、STOP RUN、および GOBACK の作用例
プログラム A、B、C、D、および E を含んでいる活動化グループ。 A が B および C を呼び出し、C が D および E を呼び出します。
ステートメント プログラム A プログラム B プログラム C プログラム D プログラム E
EXIT PROGRAM  1   4   4   2   2 
STOP RUN  3   3   3   3   3 
GOBACK  3   4   4   2   2 
 1 
ステートメントはメイン・プログラム内にあるので、CONTINUE 句のない EXIT PROGRAM がコーディングされていても、処理は行われません。 処理は、プログラムの次のステートメントから続行されます。 活動化グループは活動状態のままで、CONTINUE 句を指定した EXIT PROGRAM は、制御をプログラム A の呼び出し側に戻します。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 2 
活動化グループは活動状態のままで、制御はプログラム C に戻されます。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 3 
活動化グループは終了し、制御はメイン・プログラムの呼び出し側に戻されます。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。 活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。
 4 
活動化グループは活動状態のままで、制御はプログラム A に戻されます。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
図 55. 2 つの名前付き活動化グループにおける EXIT PROGRAM、STOP RUN、および GOBACK の作用例
活動化グループ 1 にはプログラム A および B が含まれています。 活動化グループ 2 にはプログラム C、D、および E が含まれています。 C は D および E を呼び出します。
ステートメント プログラム A プログラム B プログラム C プログラム D プログラム E
EXIT PROGRAM  1   5   1   2   2 
STOP RUN  3   3   4   4   4 
GOBACK  3   5   4   2   2 
 1 
ステートメントはメイン・プログラムにあるので、CONTINUE 句のない EXIT PROGRAM ステートメントを使用しても、何も処理は行われません。 処理は、プログラムの次のステートメントから続行されます。 CONTINUE 句を指定した EXIT PROGRAM を使用すると、活動化グループは活動状態のままで、 制御は呼び出し側プログラムまたはコマンドに戻ります。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 2 
活動化グループは活動状態のままで、制御はプログラム C に戻されます。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 3 
活動化グループは終了し、制御はメイン・プログラムの呼び出し側に戻されます。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。 活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。
 4 
活動化グループは終了し、制御はプログラム A に戻されます。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。 活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。
 5 
活動化グループは活動状態のままで、制御はプログラム A に戻されます。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
図 56. 複数の *NEW および名前付き活動化グループにおける EXIT PROGRAM、STOP RUN、および GOBACK の作用例
活動化グループ 1 にはプログラム A および D が含まれています。 活動化グループ 2 にはプログラム C および E が含まれています。 *NEW 活動化グループにはプログラム B が含まれています。 A は B および C を呼び出します。 C は D および E を呼び出します。
ステートメント プログラム A プログラム B プログラム C プログラム D プログラム E
EXIT PROGRAM  1   5   1   2   2 
STOP RUN  3   4   4   2   4 
GOBACK  3   4   4   2   2 
 1 
ステートメントはメイン・プログラムにあるので、CONTINUE 句のない EXIT PROGRAM ステートメントを使用しても、何も処理は行われません。 処理は、プログラムの次のステートメントから続行されます。 CONTINUE 句を指定した EXIT PROGRAM を使用すると、活動化グループは活動状態のままで、 制御は呼び出し側プログラムまたはコマンドに戻ります。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 2 
活動化グループは活動状態のままで、制御はプログラム C に戻されます。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 3 
活動化グループは終了し、制御はメイン・プログラムの呼び出し側に戻されます。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。 活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。
 4 
活動化グループは終了し、制御はプログラム A に戻されます。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。 活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。
 5 
ステートメントはメイン・プログラムにあるので、CONTINUE 句のない EXIT PROGRAM ステートメントを使用しても、何も処理は行われません。 処理は、プログラムの次のステートメントから続行されます。

CONTINUE 句を指定した EXIT PROGRAM を使用すると、制御は呼び出し側プログラムまたはコマンドに戻ります。 *NEW 活動化グループでは、メイン・プログラムが呼び出し側に制御を戻す時点で活動化グループが終了します。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。

活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。

図 57. *NEW、名前付き、および *DFTACTGP 活動化グループにおける EXIT PROGRAM、STOP RUN、および GOBACK の作用例
活動化グループ 1 にはプログラム A および D が含まれています。 *DFTACTGP 活動化グループには OPM COBOL/400 プログラム C および E が含まれています。 *NEW 活動化グループにはプログラム B が含まれています。
ステートメント プログラム A プログラム B プログラム C プログラム D プログラム E
EXIT PROGRAM  1   6   7   2   2 
STOP RUN  3   4   5   2   5 
GOBACK  3   4   5   2   2 
 1 
ステートメントはメイン・プログラムにあるので、CONTINUE 句のない EXIT PROGRAM ステートメントを使用しても、何も処理は行われません。 処理は、プログラムの次のステートメントから続行されます。 CONTINUE 句を指定した EXIT PROGRAM を使用すると、活動化グループは活動状態のままで、 制御は呼び出し側プログラムまたはコマンドに戻ります。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 2 
活動化グループは活動状態のままで、制御はプログラム C に戻されます。 活動化グループで使用されたすべてのファイルとリソースは、最後に使用された状態のままです。
 3 
活動化グループは終了し、制御はメイン・プログラムの呼び出し側に戻されます。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。 活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。
 4 
活動化グループは終了し、制御はプログラム A に戻されます。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。 活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。
 5 
活動化グループは活動状態のままで、制御はプログラム A に戻されます。 プログラム C またはプログラム E によってオープンされたファイルはすべてクローズされます。 プログラム C またはプログラム E によってオープンされたファイルに対する保留中のコミット処理は、暗黙のうちにコミットされます。 プログラム C とプログラム E のストレージは解放されます。
 6 
ステートメントはメイン・プログラムにあるので、CONTINUE 句のない EXIT PROGRAM ステートメントを使用しても、何も処理は行われません。 処理は、プログラムの次のステートメントから続行されます。

CONTINUE 句を指定した EXIT PROGRAM を使用すると、制御は呼び出し側プログラムまたはコマンドに戻ります。

*NEW 活動化グループでは、メイン・プログラムが呼び出し側に制御を戻す時点で活動化グループが終了します。 活動化グループは、その活動化グループの範囲のすべてのファイルをクローズします。 その活動化グループの範囲の保留中のコミット処理は、暗黙のうちにコミットされます。

活動化グループに割り振られたすべてのリソースは、システムに戻されます。 活動化グループが終了する結果、活動化グループ内で活動化されていたすべてのプログラムは、最初の状態に戻ります。

 7 
ステートメントはメイン・プログラムにあるため、何も処理は行われません。 処理は、プログラムの次のステートメントから続行されます。