CBL_EXIT_PROC

アプリケーションの終了時に自動的に呼び出される終了プロシージャを登録または解除します。

構文:

call "CBL_EXIT_PROC" using     install-flag
                               install-params
                     returning status-code

パラメーター

install-flag
呼び出しプロトタイプ (「説明の読み方」を参照):cblt-x1-compx
PIC:pic x comp-x
install-params
cblt-exit-params として定義されている集団 (以下を含む)
01 cblt-exit-params            typedef.
  03 cblte-ep-install-addr     cblt-ppointer.	*> usage procedure-pointer.
  03 cblte-ep-install-priority cblt-x1-compx.	*> pic x comp-x
status-code
説明の読み方」を参照。

入力パラメーター:

install-flag
実行する処理
0 終了プロシージャをデフォルトの優先度 (64) で登録します
1 終了プロシージャを登録解除します
2 登録済みの終了プロシージャの優先度を問い合わせます
3 終了プロシージャを指定された優先度で登録します
cblte-ep-install-addrs
登録、登録解除、または問い合わせる終了プロシージャのアドレス
cblte-ep-install-priority
install-flag に 3 を指定した場合に、登録する終了プロシージャの優先度を設定します。優先度の範囲は 0 から 127 です。それ以外の場合は、無視されます。

出力パラメーター:

cblte-ep-install-priority
install-flag が 2 に設定されている場合に、選択されたプロシージャの優先度を返します。

説明:

登録した終了プロシージャは、アプリケーションが STOP RUN で正常終了した場合のみでなく、キーボード割り込みや RTS エラーなどで異常終了した場合にも実行されます。このルーチンを繰り返し呼び出すことで、1 つのアプリケーションに複数の終了プロシージャを登録できます。

終了プロシージャは任意の言語で記述できます。COBOL の場合は、cblte-ep-install-addrs にエントリ ポイントのアドレスを指定する必要があります。エントリ ポイントのアドレスは、次の文で取得できます。

  set install-addrs to entry "entry-name"

COBOL の終了プロシージャには、CALL 文を含む有効な COBOL コードを必要に応じて使用できます。終了プロシージャは、その中のメイン プログラムで EXIT PROGRAM または GOBACK が実行されるか、STOP RUN 文が実行されると終了します。

終了プロシージャには、呼び出し時に渡すべきパラメーターはありません。

登録したすべての終了プロシージャは優先度を持っており、その値によって実行される順序が決まります。優先度の値が小さいプロシージャが先に実行されます。複数のプロシージャの優先度の値が同じである場合には、実行順序は登録とは逆になります。つまり、最後に登録したプロシージャが最初に実行されることになります。

登録時に優先度を指定しない (install-flag = 0) 場合には、デフォルトの優先度である 64 が割り当てられます。任意の優先度を割り当てるには、install-flag に 3 を指定し、0 から 127 の範囲内で優先度を設定します。128 から 256 の範囲の優先度は COBOL システム用に予約されており、使用することはできません。ただし、独自に作成したファイル ハンドラーには優先度として 200 を割り当てる必要があります。

登録済みの終了プロシージャは、再登録を試みても無視されます。ただし、異なる優先度で再登録を試みた場合は、該当する登録済みプロシージャの優先度が変更されます。RETURN-CODE はゼロに設定されます。

登録済みプロシージャの優先度を照会するには、install-flag を 2 に設定します。この呼び出しで対象のプロシージャが見つかると、その優先度が cblte-ep-install-priority で返されます。プロシージャは cblte-ep-install-addrs で識別されます。プロシージャが見つからない場合には、RETURN-CODE がゼロ以外の値に設定されます。