すべての ILE 言語 (ILE COBOL を含む) では、呼び出し先 ILE プロシージャーまたは OPM プログラム・オブジェクトとの間で制御を転送するために、 呼び出しスタックと呼ばれる共通のメカニズムを使用します。 呼び出しスタックは、呼び出し先の ILE プロシージャーまたはプログラム・オブジェクトごとにそれぞれ 1 つの項目を含む、 後入れ先出しの呼び出しスタック項目のリストを構成します。 各呼び出しスタック項目には、ILE プロシージャーの自動変数、 およびその呼び出しスタック項目の範囲のその他のリソース (たとえば、 異常事態処理ルーチンと取り消しハンドラー) に関する情報が入れられます。
ILE COBOL では、呼び出し先の ILE COBOL プログラムまたはネストされたプログラムごとに、それぞれ 1 つの呼び出しスタック項目があります。 呼び出される各宣言にも、それぞれの呼び出しスタック項目があります。
呼び出しを行うと、呼び出し先の ILE プロシージャーまたは OPM プログラム・オブジェクトのスタックに新しい項目が追加され、 呼び出し先オブジェクトに制御が渡されます。 戻り時には、その呼び出しスタック項目は除去され、直前の呼び出しスタック項目にある呼び出された ILE プロシージャーまたはプログラム・オブジェクトに制御が渡されます。
ILE では、 複数の活動化グループでプログラム・オブジェクトを実行可能なアプリケーションを作成することができます。 呼び出し側プログラムの活動化グループのものとは異なる活動化グループで実行されている ILE COBOL プログラム・オブジェクトを呼び出すことができます。 この場合、この呼び出し先プログラム・オブジェクトの呼び出しスタック項目は、管理境界と呼ばれます。 管理境界とは、ILE 呼び出しスタック項目のうち、 直前の呼び出しスタック項目が別の活動化グループの ILE プロシージャーまたはプログラム・オブジェクトになっているものと定義されます。 直前の呼び出しスタック項目が OPM プログラム・オブジェクトのものである ILE 呼び出しスタック項目も管理境界です。
呼び出し先プログラム・オブジェクトが、特定の活動化グループで最初に活動化されるプログラム・オブジェクトである場合、 その呼び出しスタック項目は、ハード管理境界と呼ばれます。 管理境界としての呼び出し先プログラム・オブジェクトが、 活動化グループで最初に活動化されるプログラム・オブジェクトではない場合、 その呼び出しスタック項目は、ソフト管理境界と呼ばれます。 OPM COBOL/400 実行単位と互換性のある実行単位のメイン・プログラムは、活動化グループのハード管理境界にあります。
STOP RUN ステートメント (または ILE COBOL のメイン・プログラムの GOBACK ステートメント) が、 呼び出し先の ILE COBOL プログラムの中に検出された場合、管理境界の呼び出し側に制御が渡されます。 OPM COBOL/400 実行単位と互換性のある実行単位では、STOP RUN により実行単位は停止します。
コミットメント制御が活動化グループの範囲であり、 活動化が正常終了して、ファイルのクローズにエラーがなかった場合、 コミットメント制御下で暗黙の COMMIT 操作がファイルに対して実行されます。 活動化グループが異常終了するか、ファイルのクローズにエラーがあった場合、ROLLBACK 操作が実行されます。 コミットメント制御がジョブの範囲である場合は、何も起こりません。
また、管理境界では、未処理エラーは、機能チェックに変えられます。 その機能チェックも処理されなかった場合、 管理境界においてその機能チェックは、一般 ILE 障害条件 CEE9901 に変更され、管理境界の呼び出し側に送られます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.