ILE COBOL 解説書

+----------------------------------IBM 拡張----------------------------------+


XML PARSE ステートメント

XML PARSE ステートメントは、COBOL 実行時の一部である 高速 XML パーサーに対する ILE COBOL 言語インターフェースです。 XML PARSE ステートメントは、 XML 文書を構文解析し、1 つずつユーザー作成の処理プロシ ージャーに渡します。

XML 解析ステートメント - 形式 1
 
>>-XML--PARSE--ID-1--PROCESSING--PROCEDURE--+----+-------------->
                                            '-IS-'
 
>--プロシージャー名-1--+---------------------------------+------>
                       '-+-THROUGH-+--プロシージャー名-2-'
                         '-THRU----'
 
>--+-----------------------------------------+------------------>
   '-+----+--EXCEPTION--命令ステートメント-1-'
     '-ON-'
 
>--+----------------------------------------------+------------->
   '-NOT--+----+--EXCEPTION--命令ステートメント-2-'
          '-ON-'
 
>--+---------+-------------------------------------------------><
   '-END-XML-'
 
 
XML 解析ステートメント - 形式 2
 
>>-XML--PARSE--FILE-STREAM--ID-2--PROCESSING--PROCEDURE--------->
 
>--+----+--プロシージャー名-1----------------------------------->
   '-IS-'
 
>--+---------------------------------+-------------------------->
   '-+-THROUGH-+--プロシージャー名-2-'
     '-THRU----'
 
>--+-----------------------------------------+------------------>
   '-+----+--EXCEPTION--命令ステートメント-1-'
     '-ON-'
 
>--+----------------------------------------------+------------->
   '-NOT--+----+--EXCEPTION--命令ステートメント-2-'
          '-ON-'
 
>--+---------+-------------------------------------------------><
   '-END-XML-'
 
 

ID-1
XML 文書文字ストリームを含む英数字または国別データ項目でな ければなりません。 ID-1 は関数 ID とすることはできません。

ID-1 が英数字の場合、その内容は、XML 文書のためのコード化文字セットでリストさ れている、1 バイト文字セットの 1 つを使用してエンコードされなければなりません。エンコード宣言を含まない EBCDIC XML 文書は、ソース・メンバーのコード化文字セットで解析されます。

ID-1 が国別の場合、その内容 は、CCSID 13488 (UCS-2) を使用してエンコードされなければなりません。 ID-1 は、複数のエンコード単位を使用して表される文字エンティティー を含んではなりません。

ID-2
ID-2 は、XML 文書を含むストリーム・ファイルの絶対または相対パ ス名を含む英数字データ項目でなければなりません。 絶対名は「/」で始まり、 「/u/user1/myxml」のようになります。 相対パス名は「/」では始まらないので、現 行ディレクトリーと連結されます。 エンコード宣言を含まない指定されたストリーム・ファイルに配置 された XML 文書 (ASCII XML 文書を含む) は、ストリーム・ファイルのコード 化文字セットで解析されます。

PROCESSING PROCEDURE 句
プロシージャーの名前を指定し、XML パーサーが生成するさまざまなイ ベントを処理します。

プロシージャー名-1
処理プロシージャー内の、最初または唯一の、セクションまたは段落 を指定します。

プロシージャー名-2
処理プロシージャー内の、最後のセクションまたは段落を指 定します。

処理プロシージャーは、XML イベントが処理されるステートメントで構 成されます。 処理プロシージャーの中には、処理プロシージャー内 の、CALL、EXIT、GO TO、GOBACK、および PERFORM ステートメントによって 実行されるすべてのステートメントも含まれます。

処理プロシージャーは、XML PARSE ステート メントを直接 実行してはなりません。 ただし、処理プロシージャーが、CALL ステートメントを使用して制御を最 外部プログラムに渡す場合、ターゲット・プログラムは、同じまたは異なる XML PARSE ステートメントを実行できます。 複数のスレッドで実行するプログラムは、同じ XML ステートメントまた は異なる XML ステートメントを同時に実行できます。

コンパイラーは、処理 プロシージャー内の最後のステートメントの後ろに、戻りメカニズムを挿入します。 処理プロシージャーは、STOP RUN ステートメントによって実行単位を 終了できます。 GOBACK または EXIT PROGRAM ステートメントによってパーサーに戻ろうとしてはなりません。

処理プロシージャーについて 詳しくは、制御フローおよび処理プロシージャーを参照してください。

ON EXCEPTION
ON EXCEPTION 句は、XML PARSE ステートメントが例外条件を発生 させた場合に実行される命令ステートメントを指定します。

例外条件は、XML パ ーサーが、XML 文書の処理でエラーを検出した場合に発生します。まずパーサーは、 制御を処理プロシージャーに渡し、特殊レジスター XML-EVENT が「EXCEPTION」を含む ように設定して、例外 XML イベントをシグナル通知します。パーサーは、特殊レジスター XML-CODE 内に数値エラー・コードを規定します。詳しく は、「ILE COBOL プログラマーの手引き」で説明しています。

例外条件は、通常の XML イベントからパーサーに戻る前に XML-CODE を -1 に設定することにより、処理プロシージャーが解析を故意に終了した 場合にも発生します。 このケースでは、パーサーは、EXCEPTION XML イベントをシ グナル通知しません。

ON EXCEPTION 句が指定されている場合、パ ーサーは制御を命令ステートメント-1 に転送します。ON EXCEPTION が指定されて いない場合、NOT ON EXCEPTION 句は、あるとしても無視され、制御は、XML PARSE ステー トメントの終わりに転送されます。

XML 処理プロシージャーが、例外 XML イベントを処理し、制御がパーサ ーに戻る前に XML-CODE をゼロに設定した場合、例外条件はもはや存在しません。 処理されていない他の例外が、パーサーの終了前に発生した場合、制御 は、指定されていれば、NOT ON EXCEPTION 句の命令ステートメント-2 に転送さ れます。

NOT ON EXCEPTION
NOT ON EXCEPTION 句は、XML PARSE 処理の終了時に例外条件が存在 しない場合に実行される命令ステートメントを指定します。

例外条件が XML PARSE 処理 の終了時に存在しない場合、制御は、指定されていれば、NOT ON EXCEPTION 句の命令 ステートメント-2 に転送されます。NOT ON EXCEPTION 句が指定されていない場合は、 制御は XML PARSE ステートメントの終わりに転送されます。 ON EXCEPTION 句は、指定されていても無視されます。

特殊レジスター XML-CODE は、XML PARSE ステートメント の実行後、ゼロを含みます。

END-XML 句
この明示範囲終了符号は、XML PARSE ステートメントの範囲を区切る働きをします。 END-XML 句を使用することによって、XML PARSE 条件ステートメント を別の条件ステートメントにネストすることができます。 END-XML は、ON EXCEPTION または NOT ON EXCEPTION 句のいずれも指定し ていない XML PARSE ステートメントで使用されることも可能です。


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