ILE COBOL 解説書

XML GENERATE の操作

ID-2 内の適格な各基本データ項目のコンテントは、 基本データのフォーマット変換 および 生成された XML データのトリミング で説明されているような文字フォーマットに変換されます。

各ストレージ域の最初の定義のみが処理されます。データ項目の再定義は含まれません。RENAMES 節で効果的に定義されたデータ項目も含まれません。

次に、変換されたコンテントは、XML マークアップで 要素文字コンテントとして挿入されます。XML 要素名は、XML 要素名情報で説明されているように ID-2 内のデータ名から取得されます。選択された基本項目を含むグループ項目の名前は親要素として保存されます。生成された XML をより読みやすくするために、余分の空白 (改行、インデントなど) は挿入されません。XML 宣言は生成されません。

ID-1 で指定された受信領域が、作成された XML 文書を含むのに十分大きくない場合、エラー条件が存在します。詳細は、上述の ON EXCEPTION 句の説明を参照してください。

ID-1 が生成された XML 文書よりも長い場合、XML が生成される部分のID-1 のみが変更されます。ID-1 の残りの部分には、この XML GENERATE ステートメントの実行前に入っていたデータがそのまま残ります。このデータを参照するのを避けるためには、ID-1 を XML GENERATE ステートメントの前のスペースに初期設定するか、COUNT IN 句を指定します。

COUNT IN 句が指定された場合、ID-3 には (XML GENERATE ステートメントの実行後)、生成された文字位置の総数 (UCS-2 エンコード単位またはバイト単位) が含まれます。 ID-3 を参照変更長さフィールドとして使用し、生成された XML 文書を含む部分の ID-2 を参照することができます。

XML GENERATE ステートメントの実行後、特殊レジスター XML-CODE は、正常な完了を示す 0 または、ゼロ以外の例外コードのいずれかを含みます。(詳しくは、「ILE COBOL プログラミング・ガイド」も参照してください。)

XML PARSE ステートメントは、特殊レジスター XML-CODE も使用します。したがって、 XML PARSE ステートメントの処理手順で XML GENERATE ステートメントをコード化する場合は、その XML GENERATE ステートメントを実行する前に XML-CODE の値を保管し、XML GENERATE ステートメントの終了後に保管した値を復元します。

基本データのフォーマット変換

基本データ項目は、以下のようにデータ項目のタイプに応じて文字フォーマットに変換されます。

生成された XML データのトリミング で説明されているように、文字フォーマットに変換後、前後のスペースおよび先行ゼロは除去されます。

変換後、データ項目が、 XML コンテントで許可されていない文字を含む場合、関連する XML 仕様で指定したように、 元のデータ値 (つまり、変換またはトリミングの前のデータ項目中の値) は 16 進数で表され、接頭部 'hex' を持つ要素タグ名は、通常のタグ名で置換されます。 たとえば、データ項目 Customer-Name が実行時に LOW-VALUES を含んでいることが分かった場合、通常の 'Customer-Name' の代わりに XML 要素タグ名 'hex.Customer-Name' が使用され、コンテントはゼロ数字のペアのストリングとして表されます。

5 つの文字 & (アンパーサンド)、' (アポストロフィ)、 > (より大きい)、< (より小さい)、および " (引用符) の残ったインスタンスは、同等の XML 参照 '&amp;'、'&apos;'、'&gt;'、 '&lt;'、および '&quot;' にそれぞれ変換されます。

したがって、ID-1 が、カテゴリー国別のデータ項目である場合、 すべての国別以外の値は国別フォーマットに変換されます。

生成された XML データのトリミング

データ値へのトリミングは、文字フォーマットに変換後に行われます。 (変換は、基本データのフォーマット変換の下に説明されます。)

符号付き数値から変換される値の場合、値が正のとき、先行スペースは除去されます。

数値項目から変換される値の場合、実際のまたは暗黙の小数点のすぐ左の桁より前にある先行ゼロ (開始負符号 (-)の後) は除去されます。小数点より右にある後続ゼロは保持されます。たとえば、次のとおりです。

英字クラス、英数字クラス、DBCS クラス、および国別クラスのデータ項目からの文字値は、対応するデータ項目が左 (デフォルト) か右に位置調整されているかに応じて、後続または先行スペースが除去されます。 つまり、JUSTIFIED 節を指定しない対応するデータ項目を持つ値の場合、後続スペースが除去されます。JUSTIFIED 節を指定するデータ項目を持つ値の場合、先行スペースが除去されます。文字値がスペースのみから構成される場合、トリミングの完了後、スペースが 1 つ値として残ります。


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