XML パーサーが XML-CODE に入れて渡す例外コードが特定範囲内にある場合、処理プロシージャーを使用して例外イベントを処理できます。
処理プロシージャーで例外イベントを処理するには、次の手順に従います。
このような方法で例外を処理できるのは、XML-CODE に入れて渡される例外コードが以下の範囲の 1 つに含まれる場合 (エンコードの矛盾が検出されたことを示します) のみです。
XML-CODE に渡される 例外コードが 1 から 49 の範囲内にある例外に対して、限られた例外処理を行うことができます。この範囲内の例外が発生した後、パーサーは、戻る前に XML-CODE がゼロに設定されている場合でも、END-OF-DOCUMENT イベントを除き、それ以上標準イベントをシグナル通知しません。XML-CODE をゼロに設定した場合、パーサーは文書の構文解析を続行し、検出した例外をシグナル通知します (これは、文書内で複数のエラーを発見する方法として有効です。)この範囲の例外発生後の構文解析の終了時に、ON EXCEPTION 句に指定されたステートメントがあればこれに制御が渡され、そうでなければ、XML PARSE ステートメントの終わりに制御が渡されます。特殊レジスター XML-CODE には、パーサーが検出した最新の例外のコードが格納されます。
この他の例外では、パーサーは追加のイベントをシグナル通知せず、ON EXCEPTION 句に指定されているステートメントに制御を渡します。この場合、処理プロシージャーがパーサーに制御を戻す前に XML-CODE をゼロに設定したとしても、XML-CODE には元の例外番号が設定されます。
例外を処理する必要がない場合は、XML-CODE の値を変更しないでパーサーに制御を戻します。パーサーは、ON EXCEPTION 句で指定されたステートメントに制御権を移動します。ON EXCEPTION 句がコーディングされていない場合、制御は XML PARSE ステートメントの終わりに移動します。
XML-CODE の値を元の例外コード以外の非ゼロ値に設定してパーサーに制御を戻した場合、結果は保証されません。
構文解析の終了時点までに未処理の例外がなかった場合は、NOT ON EXCEPTION 句に指定しされたステートメントに制御が渡されます (構文解析の正常終了)。NOT ON EXCEPTION 句をコーディングしなかった場合、制御は XML PARSE ステートメントの終わりに渡されます。特殊レジスター XML-CODE はゼロに設定されます。
関連概念
XML パーサーによるエラーの処理方法
XML-CODE の内容
関連タスク
XML を処理するためのプロシージャーの作成
XML 文書のエンコード方式についての理解
コード・ページの矛盾の処理
関連参照
継続を許可する XML PARSE 例外
継続を許可しない XML PARSE 例外
XML-CODE
(「COBOL for Windows 言語解説書」)