ハンドラー理由コードの取り消し

次の表は、理由コードに設定されるビットをリストしたものです。 活動化グループを停止すると、「活動化グループが停止する」ビットも理由コードに設定されます。 これらのビットは、<except.h> の _CNL_Hndlr_Parms_T にある _CNL_MASK_T と相互に関連付けられている必要があります。 第 2 列には、<except.h> の取り消し理由マスクに定義されたマクロ定数が記載されています。

表 18. 取り消された呼び出し理由コードの判別
機能 理由コードに設定されたビット 論拠
ライブラリー・ルーチン
exit _EXIT_VERB exit の定義は、処理の正常終了です。 したがって、この関数によって取り消された呼び出しは、理由コード normal で実行されます。
abort
_ABNORMAL_TERM
_EXIT_VERB
abort の定義は、処理の異常終了です。 したがって、この関数によって取り消された呼び出しは、理由コード abnormal で実行されます。
longjmp _JUMP 通常は、例外ハンドラーから戻る場合に、longjmp() 関数を使用します。 ただし、例外以外の状態においても使用されることがあります。 これは、プログラムの「通常」パスの一部として使用されます。 したがって、これが原因で取り消された呼び出しは、理由コード normal で取り消されます。
未処理機能チェック
_ABNORMAL_TERM_
UNHANDLED_EXCP
異常状態の例外が未処理です。
システム API
CEEMRCR
_ABNORMAL_TERM
_EXCP_SENT
この API が使用されるのは、例外処理時のみです。 通常は、再開できない呼び出し、または制御が再開されても振る舞いが予期できない呼び出しを取り消す目的で使用されます。 これらの呼び出しによって、例外を処理することも可能でしたが、実際には実行されませんでした。 この API によって取り消された呼び出しは、理由コード abnormal で実行されます。
QMHSNDPM /QMHRSNEM (エスケープ・メッセージ) メッセージ・ハンドラー API _ABNORMAL_TERM _EXCP_SENT ターゲット呼び出しにまで至るすべての呼び出しが、例外を処理する機会がないまま取り消されます。 トピック『API』では、これらの API に関する情報を紹介しています。
i5/OS® コマンド
プロセスの終了 _ABNORMAL_TERM _PROCESS_TERM _AG_TERMINATING 活動化グループのシャットダウンが外部から開始された場合は、異常と見なされます。
RCLACTGRP _ABNORMAL_TERM _RCLRSC デフォルトは、異常終了です。 normal/abnormal フラグがコマンドに追加されていると、正常終了する場合があります。
表 19. 呼び出しの取り消しに対する共通の理由コード
ビット 説明 ヘッダー・ファイル定数 <except.h>
ビット 0 予約済み
ビット 1 例外メッセージの送信により取り消された呼び出し _EXCP_SENT
ビット 2 - 15 予約済み
ビット 16 0 - プロセスの正常終了、1 - プロセスの異常終了 _ABNORMAL_TERM
ビット 17 活動化グループが終了。 _AG_TERMINATING
ビット 18 活動化グループ再利用 (RCLACTGRP) によって開始。 _RCLRSC
ビット 19 プロセスの終了によって開始。 _PROCESS_TERM
ビット 20 exit() 関数によって開始。 _EXIT_VERB
ビット 21 未処理機能チェックによって開始。 _UNHANDLED_EXCP
ビット 22 longjmp() 関数により取り消された呼び出し。 _JUMP
ビット 23 例外処理のために jump により取り消された呼び出し _JUMP_EXCP
ビット 24 - 31 予約済み (0)


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]