XML 出力の生成

COBOL データを XML に変換するには、以下の例のように、XML GENERATE ステートメントを使用します。

XML GENERATE XML-OUTPUT FROM SOURCE-REC
      COUNT IN XML-CHAR-COUNT
  ON EXCEPTION
    DISPLAY 'XML generation error ' XML-CODE
    STOP RUN
  NOT ON EXCEPTION
    DISPLAY 'XML document was successfully generated.'
END-XML

XML GENERATE ステートメントで、XML 出力を受け取るデータ項目 (この例では XML-OUTPUT) を最初に示します。生成された XML 出力を含めるのに十分な大きさになるようにデータ項目を定義します。一般には、COBOL ソース・データのデータ名の長さに応じて、そのデータ・サイズの 5 倍から 8 倍にします。

DATA DIVISION では、受取 ID を英数字 (英数字グループ項目またはカテゴリー英数字の基本項目のいずれか)、または国別 (カテゴリー国別の基本項目) として宣言することができます。

XML 出力に 以下のいずれかの特性を持つ COBOL ソース・レコードのデータを含む場合は、受取 ID を国別にする必要があります。

次に、XML 形式に変換されるソース・データ項目 (この例では SOURCE-REC) を示します。このソース・データ項目は、英数字グループ項目、または英数字クラスあるいは国別クラスの基本データ項目のいずれかにすることができます。 そのデータ項目のデータ記述では RENAMES 文節を指定しないでください。

ソース・データ項目が英数字グループ項目の場合、そのソース・データ項目は、基本項目ではなく、グループ項目として処理されます。ソース・データ項目に従属するグループはすべて、グループ項目としても処理されます。

一部の COBOL データ項目は XML に変換されずに、無視されます。無視されるのは、XML に変換する英数字グループ項目の従属データ項目が以下の場合です。

以下の XML を生成する場合は、ソース・データ項目内のこれらの項目も無視されます。

XML を生成する場合は、無視されない基本データ項目が少なくとも 1 つ必要です。無視されないデータ項目の場合は、XML に変換される ID を DATA DIVISION で宣言するときに、その ID が以下の条件を満たしていることを確認してください。

XML 宣言は生成されません。生成された XML を読みやすくするための空白文字 (例えば、改行やインデント) は挿入されません。

必要であれば、COUNT IN 句をコーディングして、XML 出力の生成中に充てんされた XML 文字位置の数を取得することができます。カウント・フィールドを、PICTURE ストリング内の記号 P を持たない整数データ項目として宣言します。カウント・フィールドと参照変更を使用すると、受取データ項目のうちの、生成された XML 出力を含む部分だけを取得することができます。例えば、XML-OUTPUT(1:XML-CHAR-COUNT) は、XML-OUTPUT の最初の XML-CHAR-COUNT 文字位置を参照しています。

さらに、以下の句のいずれかまたは両方を指定して、XML 文書の生成後に制御を受け取ることもできます。

XML GENERATE ステートメントを明示範囲終了符号 END-XML を使用して終了することができます。条件ステートメントで ON EXCEPTION 句または NOT ON EXCEPTION 句を持つ XML GENERATE ステートメントをネストする場合は、END-XML をコーディングします。

XML 生成は、COBOL ソース・レコードが XML に変換されてしまうか、エラーが発生するまで続きます。エラーが発生した場合、結果は以下のようになります。

XML の生成中にエラーが発生しなかった場合は、特殊レジスター XML-CODE にゼロが含まれ、制御は NOT ON EXCEPTION 句に渡されるか (そのように指定されている場合)、そのように指定されていない場合は、XML GENERATE ステートメントの終わりに渡されます。

例: XML の生成

関連作業
生成された XML 出力のエンコードの制御
XML 出力の生成中のエラーの処理

関連リファレンス
『データのクラスおよびカテゴリー』(「ILE COBOL 言語解説書」)
『XML GENERATE ステートメント』(「ILE COBOL 言語解説書」)
『XML GENERATE の操作』 (「ILE COBOL 言語解説書」)