ILE C プログラムまたはプロシージャーからの制御の戻り

ILE C で return キーワードを使用すると、制御が呼び出し側プログラムに戻されます。 ILE C return キーワードが void 以外のものを戻す場合、ILE COBOL ステートメントに RETURNING 句が入っていなければなりません。 さらに、ILE C から戻される項目のデータ・タイプおよび長さは、COBOL 呼び出しステートメントの RETURNING 句の ID のデータ・タイプおよび長さと一致していなければなりません。

ILE C プログラムから return を出すと、呼び出し先 ILE C プログラムが実行されている ILE 活動化グループは終了します。 ILE C プログラムが *NEW 活動化グループで実行するように定義されていた場合、return がハード管理境界で出されると、ILE C プログラムが実行されていた活動化グループは終了します。 ILE C プログラムが *CALLER 活動化グループまたは名前付き活動化グループで実行されるように定義されていた場合は、return が出されても、ILE C プログラムが実行されていた活動化グループは活動状態のままです。 その後、この活動化グループで ILE C プログラムを呼び出すと、その ILE C プログラムは最後に使用されたときの状態になっています。

exit(n) 関数により、制御を最も近い管理境界に戻すことができます。 例外条件が発生すると、例外ハンドラーが呼び出されるか、または最も近い管理境界に制御が戻されることがあります。

ILE C プログラムの実行されている名前付き活動化グループが呼び出し側 ILE COBOL プログラムとは違う場合、exit(n) または未処理の例外によって、次のことが生じる場合があります。 exit(n) または未処理の例外がハード管理境界の近くで生じると、ILE C が実行されていた活動化グループは停止します。 それがソフト管理境界の近くで生じた場合には、活動化グループは活動状態のままです。 未処理の例外によって ILE C プログラムが実行されていた活動化グループが停止した場合、 呼び出し側 ILE COBOL プログラムの活動化グループにおいて CEE9901 エスケープ・メッセージが出されます。

ILE C プログラムと呼び出し ILE COBOL プログラムが同じ活動化グループで実行されている場合は、exit(n) または未処理の例外によって次のことが生じる場合があります。 exit(n) または未処理の例外がハード制御境界の近くで生じると、ILE COBOL プログラムを含め、活動化グループは停止します。 ILE C プログラムと ILE COBOL プログラムの両方が実行されていた活動化グループが未処理の例外によって停止されると、 ハード管理境界の前のプログラムに対して CEE9901 エスケープ・メッセージが出されます。 exit(n) または未処理の例外がソフト管理境界の近くで生じた場合、exit(n) が実行された ILE C プログラムからソフト管理境界のプログラムまでのすべてのプログラムとプロシージャー (ILE COBOL プログラムを含む) が停止されます。

呼び出し先プログラムが例外なしで終了した場合、ILE COBOL プログラムの CALL ステートメントの次のステートメントに制御が戻されます。 呼び出し先プログラムが例外で終了した場合には、ILE COBOL プログラムで指定されている例外処理プロシージャーが呼び出されます。 例外処理プロシージャーに制御を渡す方法については ILE COBOL のエラーおよび例外の処理を参照してください。

呼び出し先プログラムでは、ILE COBOL 呼び出し側プログラムをすべてスキップするエスケープ・メッセージを出すこともできます。 この場合、ILE COBOL プログラムの呼び出しは取り消されます。 呼び出しの取り消しは、ILE COBOL プログラムから戻る場合と同様です。