Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 プログラミング・ガイド


UTF-8 でエンコードされた XML 文書の構文解析

XMLPARSE(XMLSS) コンパイラー・オプションが有効である場合には、 UTF-8 でエンコードされた XML 文書を、一部の追加要件が適用される点を除いて、他の XML 文書を構文解析するのと同じように構文解析することができます。

UTF-8 でエンコードされた XML 文書を構文解析するには、次のコードの断片で示すように、XML PARSE ステートメントの ENCODING 句に CCSID 1208 を指定する必要があります。

XML PARSE xml-document
    WITH ENCODING 1208  
    PROCESSING PROCEDURE xml-event-handler
    . . .
END-XML

WORKING-STORAGE または LOCAL-STORAGE に、英数字データ項目または英数字グループ項目として、xml-document を定義します。

デフォルトでは、パーサーは、英数字 XML 特殊レジスター XML-TEXTXML-NAMESPACE、および XML-NAMESPACE-PREFIX で XML 文書フラグメントを返します。 UTF-8 文字 1 文字は、可変個のバイト数でエンコードされます。 英数字データに対するほとんどの COBOL 操作では、1 バイトのエンコード (1 文字が 1 バイトでエンコードされるエンコード) を想定しています。 UTF-8 文字を英数字データとして操作する場合、データが正常に処理されるようにする必要があります。 マルチバイト文字のバイトを分割する可能性がある操作 (参照変更や切り捨てを呼び出す移動操作など) は避けてください。 英数字データのマルチバイト文字を処理するために、INSPECT などのステートメントを信頼して使用することはできません。

UTF-8 文書フラグメントの処理は、XML PARSE ステートメントで RETURNING NATIONAL 句を指定することによって信頼性を高めることができます。 RETURNING NATIONAL 句を使用すると、XML 文書フラグメントは、効率的に UTF-16 エンコードに変換され、 国別特殊レジスター XML-NTEXTXML-NNAMESPACE、および XMLNNAMESPACE-PREFIX でアプリケーションに返されます。 その後、国別データ項目の XML テキスト・フラグメントを効率的に処理することができます。 (国別データ項目の UTF-16 エンコードによって、COBOL での Unicode 処理が非常に簡素化します。)

次のコードの断片では、UTF-8 XML 文書の構文解析における ENCODING 句と RETURNING NATIONAL 句、両方の使用方法を説明します。

XML PARSE xml-document
    WITH ENCODING 1208  RETURNING NATIONAL 
    PROCESSING PROCEDURE xml-event-handler
  ON EXCEPTION
     DISPLAY 'XML document error ' XML-CODE
     STOP RUN
  NOT ON EXCEPTION
     DISPLAY 'XML document was successfully parsed.'
END-XML

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)