ENTMF 

XML GENERATE 文

XML GENERATE 文はデータを XML 形式に変換する。

一般形式

WHEN 指定

汎用抑制指定

汎用抑制指定

構文規則

  1. identifier-1 は英数字または各国文字のデータ項目とする。identifier-1 は JUSTIFIED 句で記述せず、関数一意名とすることはできない。
  2. identifier-1 は添え字付けまたは部分参照が可能である。
  3. identifier-1 は、identifier-2 または identifier-3 と重複してはならない。
  4. identifier-1 は、生成された XML が identifier-2 からの以下のデータを含む場合、各国文字データ項目とする。
    1. 各国文字データ項目または DBCS データ項目
    2. DBCS 名を持つデータ項目 (つまり、名前に DBCS 文字を含むデータ項目)
    3. DBCS 文字を含む英数字データ項目
  5. identifier-2 には関数一意名または部分参照を指定できない。
  6. identifier-2 には添え字を付けられる。
  7. identifier-2 は、identifier-1 または identifier-3 と重複してはならない。
  8. identifier-2 は RENAMES 句を指定できない。
  9. identifier-2 が指定するデータ項目のうち、一般規則 5 に従って無視されないものはすべて、以下の条件を満たす必要がある。
    1. 各基本データ項目は、字類を英字、英数字、数字、または各国文字とするか、指標データ項目とする。つまり、基本データ項目は USAGE POINTER、USAGE FUNCTION-POINTER、USAGE PROCEDURE-POINTER、または USAGE OBJECT REFERENCE 指定では記述できない。
    2. そのような基本データ項目は、1 つ以上記述する。
    3. FILLER 以外の各データ名は、直属の上位の集団データ項目内で一意とする。
  10. identifier-3 は、そのピクチャ文字列で記号 P なしで定義される整数データ項目とする。
  11. identifier-3 は、identifier-1 または identifier-2 と重複してはならない。
  12. codepage は符号なしの整数データ項目または符号なしの整数定数とし、有効な符号化文字集合の一意名 (CCSID) を表すものとする。
  13. identifier-4 および identifier-5 は、項類が英数字または各国文字であるデータ項目を参照するものとする。
  14. identifier-4 および identifier-5 は、identifier-1 または identifier-3 と重複してはならない。
  15. literal-4 および literal-5 は、項類を英数字または各国文字とし、表意定数は指定できない。
  16. identifier-6 は、identifier-2 またはその下位データ項目の 1 つを参照するものとする。これには関数一意名を指定できず、部分参照または添え字も指定できない。これには、XML GENERATE 文が無視するデータ項目は指定できない。identifier-2 の詳細については、identifier-2 の説明を参照。
  17. literal-6 は、identifier-6 に対応する XML ドキュメントで生成される属性名または要素名を含む英数字または各国文字の定数とする。
  18. literal-6 が各国文字定数である場合、identifier-1 は項類が各国文字であるデータ項目を参照するものとする。
  19. identifier-7 は、identifier-2 に属する基本データ項目を参照するものとする。これには、XML GENERATE 文が無視するデータ項目は指定できない。これには関数一意名を指定できず、部分参照または添え字も指定できない。identifier-2 の詳細については、identifier-2 の説明を参照。
  20. WHEN なしで指定した identifier-8 は、identifier-2 に属する基本データ項目または集団項目を参照できる。集団項目を指定した場合、すべての従属データ項目が抑制される。WHEN を指定した identifier-8 は、identifier-2 に属する基本データ項目を参照するものとし、XML GENERATE 操作で無視されるデータ項目は指定できない。
  21. WHEN に ZERO、ZEROES、または ZEROS を指定した場合は、以下の規則が適用される。
    • identifier-8 の用途には DISPLAY-1 を指定できない。
    • 用途が DISPLAY-1 であるデータ項目は、汎用抑制指定で使用できる抑制には識別されない。
  22. WHEN に SPACE または SPACES を指定した場合は、以下の規則が適用される。
    • identifier-8 の用途は、DISPLAY、DISPLAY-1、または NATIONAL とする。identifier-8 がゾーン 10 進項目または各国文字 10 進項目である場合は、整数とする。
    • 用途が DISPLAY、DISPLAY-1、または NATIONAL であるデータ項目は、汎用抑制指定で使用できる抑制に識別される。ゾーン 10 進項目または各国文字 10 進項目では、整数のみが識別される。
  23. WHEN で LOW-VALUE、LOW-VALUES、HIGH-VALUE、または HIGH-VALUES を指定した場合は、次の規則が適用される。
    • identifier-8 の用途は、DISPLAY または NATIONAL とする。identifier-8 がゾーン 10 進項目または各国文字 10 進項目である場合は、整数とする。
    • 用途が DISPLAY または NATIONAL であるデータ項目は、汎用抑制指定で使用できる抑制に識別される。ゾーン 10 進項目または各国文字 10 進項目では、整数のみが識別される。

一般規則

  1. identifier-1 は、生成された XML ドキュメントの受け取り領域である。
  2. identifier-1 が各国文字データ項目である場合、生成される XML ドキュメントは UTF-16 で符号化される。
  3. identifier-1 のサイズは、生成される XML ドキュメントを含むために十分な大きさとする。通常は、identifier-2 内のデータ名の長さに応じて、identifier-2 のサイズの 5 から 8 倍とする。identifier-1 のサイズが不足している場合、XML GENERATE 文の終了時にエラー状態が発生する。
  4. identifier-2 は、XML 形式に変換される集団項目または基本データ項目である。
  5. identifier-2 で指定する以下のデータ項目は、XML GENERATE 文では無視される。
    1. 名前が付いていない基本データ項目または基本 FILLER データ項目
    2. SYNCHRONIZED 項目に挿入される遊びバイト
    3. REDEFINES 句で記述する、またはそのような再定義項目に属する、identifier-2 に属するデータ項目
    4. RENAMES 句で記述した、identifier-2 に属するデータ項目
    5. 従属データ項目がすべて無視される集団データ項目
  6. identifier-2 内の有効な各基本データ項目の内容は、以下のとおり文字形式に変換される。変換された内容は、要素文字内容として XML マークアップに挿入される。XML 要素名は、identifier-2 内のデータ名から派生する。選択した基本項目を含む集団項目の名前は、親要素として維持される。生成された XML を読みやすくするための追加の余白 (新しい行、インデントなど) は挿入されない。データ記述項からのデータ名に使われている大文字と小文字の厳密な使い分けは維持され、数字で始まるデータ名には下線の接頭辞が付く。
    注: データ記述項からのデータ名に使われている大文字と小文字の厳密な使い分けは、PRESERVECASE 指令を指定する場合にのみ維持される。
  7. 基本データ項目は、データ項目の種類に応じて文字形式に変換される。
    1. 英字、英数字、英数字編集、DBCS、外部浮動小数点、各国文字、および数字編集の項目は変換されない。
    2. COMPUTATIONAL-5 (COMP-5) バイナリ データ項目以外の固定小数点数値データ項目は、以下を伴う数字編集項目に転記された場合と同様に変換される。
      • 数値項目と同数の整数位置。1 つ以上の整数位置を伴う。
      • 明示指定の小数点 (数値項目に 1 桁以上の小数部がある場合)。
      • 数値項目と同数の小数部の桁。
      • 先頭の「-」ピクチャ記号 (データ項目が符号付きである場合)。
    3. COMPUTATIONAL-5 (COMP-5) バイナリ データ項目は、他の固定小数点数値項目と同様に変換される (整数部の数は除く)。整数部の数は、ピクチャ文字列内の記号「9」の数に応じて次のように計算される。
      • データ項目に 1 個から 4 個の「9」ピクチャ記号がある場合、5 から小数部の数を引いた数。
      • データ項目に 5 個から 9 個の「9」ピクチャ記号がある場合、10 から小数部の数を引いた数。
      • データ項目に 10 個から 18 個の「9」ピクチャ記号がある場合、20 から小数部の数を引いた数。
    4. 内部浮動小数点数データ項目は、それらが次のようなデータ項目に転記された場合と同様に変換される。
      • COMP-1 では、PICTURE -9.9(8)E+99 を伴う外部浮動小数点数データ項目
      • COMP-2 では、PICTURE -9.9(17)E+99 を伴う外部浮動小数点数データ項目
    5. 指標データ項目は、宣言された USAGE COMP-5 PICTURE S9(9) である場合と同様に変換される。
    6. identifier-1 が各国文字データ項目である場合、各国文字以外の値は各国文字の形式に変換される。
  8. 文字形式への変換後は、先頭空白文字、後続空白文字、および先行ゼロが以下のとおり解消される。
    1. 符号付き数値から変換された値では、値が正の場合は先頭の空白が削除される。
    2. 数値項目から変換された値では、先行ゼロが、(先頭のマイナス符号の後から) 実際にある小数点または暗黙指定の小数点の直前の桁 (ただしその桁を含まない) まで消去される。小数点の後に続くゼロは維持される。次に例を示す。
      • -012.340 は -12.340 になる
      • 0000.45 は 0.45 になる
      • 0013 は 13 になる
      • 0000 は 0 になる
    3. 英字、英数字、DBCS、および各国文字のデータ項目の文字値では、対応するデータ項目が左揃え (デフォルト) か右揃えかに応じて、後続または先頭の空白がそれぞれ削除される。つまり、後続空白文字が削除されるのは、JUSTIFIED 句を指定しない対応するデータ項目を持つ値である。先頭の空白が削除されるのは、JUSTIFIED 句を指定するデータ項目を持つ値である。文字値がすべて空白である場合、先頭または後続の空白を削除した後に、1 つの空白が値として残る。
  9. 変換後のデータ項目に、XML コンテンツでは規則違反の文字が含まれる場合は、元のデータ値 (変換または空白削除前のデータ項目の値) が 16 進数で表され、接頭辞 hex. の付いた要素タグ名が正規のタグ名の代わりに使われる。たとえば、実行時にデータ項目 My-Name に LOW-VALUES が含まれていると判明した場合、XML 要素タグ名 hex.My-Name が代わりに使用され、内容はゼロのペアの文字列で表現される。
  10. 変換後のデータ項目に、以下の 5 つの記号のいずれかのインスタンスが含まれる場合、
    • & (アンパサンド)
    • ' (アポストロフィ)
    • > (大なり記号)
    • < (小なり記号)
    • " (二重引用符)

    これらの記号はそれぞれ、対応する XML の対象記号 &amp;&apos;&gt;&lt;、および &quot; に変換される。

  11. identifier-1 が、生成された XML ドキュメントよりも長い場合、XML が生成される部分の identifier-1 のみが変更される。identifier-1 の残りの部分には、XML GENERATE 文の実行前に存在していたデータが含まれる。そのデータを参照しないようにするには、XML GENERATE 文の実行前に identifier-1 を空白に初期化するか、COUNT IN を指定する。
  12. COUNT IN を指定した場合、生成された XML の文字位置のカウントが (XML GENERATE 文の実行後に) identifier-3 に含まれる。identifier-1 (受け取り側) が各国文字データ項目である場合、そのカウントは各国文字の位置 (UTF-16 文字符号化方式単位) でのカウントになる。それ以外の場合、カウントはバイト単位である。
  13. ENCODING 指定は注記になる。
  14. XML-DECLARATION を指定すると、生成されるドキュメントは XML バージョン情報を含む XML 宣言および符号化方式宣言から始まる。identifier-1 の項類が各国文字である場合、符号化方式宣言は UTF-16 (encoding="UTF-16") となる。XML-DECLARATION 指定を省略すると、生成される XML ドキュメントには XML 宣言が含まれない。
  15. ATTRIBUTES を指定すると、生成されたドキュメントに含まれる有効な項目はそれぞれ XML 要素の属性として表現され、その有効な項目の直属の上位のデータ項目に (XML 要素の子要素としてでなく) 対応する。データ項目を有効とするには、それが基本データ項目であり、FILLER 以外の名前を持つものとし、データ記述項には OCCURS 句を指定しないものとする。
  16. NAMESPACE 指定は、生成された XML ドキュメントのネームスペースを示す。NAMESPACE を指定しない場合、または identifier-4 が長さゼロか空白のみを含む場合、XML GENERATE 文が生成する XML ドキュメントの要素名はどのネームスペースにも含まれない。
  17. NAMESPACE-PREFIX 指定は接頭辞を識別し、生成された XML ドキュメント内の各要素の開始タグおよび終了タグを修飾する。
    • NAMESPACE-PREFIX を指定しない場合、または identifier-5 が長さゼロか空白のみを含む場合、NAMESPACE 指定はドキュメントのデフォルトのネームスペースを指定する。この場合、ルート要素で宣言されたネームスペースが、そのルート要素の名前を含むドキュメントの各要素名にデフォルトで適用される。
    • NAMESPACE-PREFIX を指定し、identifier-5 が長さゼロでなく内容が空白のみではない場合、生成されるドキュメントの各要素の開始タグおよび終了タグは、指定された接頭辞によって修飾される。XML GENERATE 文を実行する際に、接頭辞は有効な XML 名 (ただしコロン (:) は含めない) とする。接頭辞には後続空白文字を含めてもよい。空白文字は使用される前に削除される。
  18. NAME を使用すると、要素名および属性名を指定できる。identifier-6 を NAME で複数回指定した場合、最後の指定が使用される。literal-6 は有効な XML ローカル名とする。

  19. TYPE を使用すると、属性および要素の生成を制御できる。identifier-7 を TYPE で複数回指定した場合、最後の指定が使用される。
    • XML GENERATE 文が WITH ATTRIBUTES 指定も含む場合、TYPE 指定は identifier-7 の優先順位を持つ。
    • ATTRIBUTE を指定した場合、identifier-7 は有効な XML 属性とする。identifier-7 は、生成した XML で、子要素としてではなく、identifier-7 に対して直属の上位の XML 要素の属性として表現される。
    • ELEMENT を指定した場合、identifier-7 は生成された XML で要素として表現される。XML 要素名は identifier-7 から派生し、要素文字内容は、XML GENERATE の操作の説明に記載のとおり、変換された identifier-7 の内容から派生する。
    • CONTENT を指定した場合、identifier-7 は、生成された XML で、identifier-7 に対して直属の上位のデータ項目に対応する XML 要素の要素文字内容として表現される。要素文字内容の値は、XML GENERATE の操作の説明に記載のとおり、変換された identifier-7 の内容から派生する。同じ上位一意名に対応するすべての複数の一意名に対して CONTENT を指定した場合、要素文字内容に寄与される複数の項目が連結される。
  20. SUPPRESS を使用すると、identifier-2 に属する項目を識別し、XML の生成時にそれらを抑制できる。WHEN 句を使用すると、そのような項目を条件付きで抑制できる。

    SUPPRESS を指定した場合、identifier-1 は、抑制前に生成された XML ドキュメントを格納できる大きさとする。

    汎用抑制指定では、identifier-2 に属する基本項目 (identifier-2 に属していない場合は XML GENERATE 操作で無視されない) は、抑制される可能性に備えて汎用的に識別される。字類が数字の項目 (NUMERIC キーワードを指定した場合) または字類が数字でない項目 (NUMNUMERIC キーワードを指定した場合) が抑制される。その両方が抑制される場合もある。ATTRIBUTE キーワードを指定した場合、生成された XML ドキュメントで XML 属性として表現される項目のみが、抑制される可能性に備えて識別される。CONTENT キーワードを指定した場合、生成された XML ドキュメントで identifier-2 に対応する XML 要素の要素文字内容として表現される項目のみが識別される。ELEMENT キーワードを指定した場合、生成された XML ドキュメントで XML 要素として表現される項目のみが識別される。複数の汎用抑制指定がある場合、その効果は累積される。

    identifier-8 は、抑制される可能性に備えて項目を明示的に示す。identifier-8 を SUPPRESS で複数回指定した場合、最後の指定が使用される。identifier-8 も汎用的に識別される一意名である場合、identifier-8 の明示的な抑制の指定は、汎用抑制指定による暗黙的な抑制の指定をオーバーライドする。

  21. XML ドキュメントの生成中にエラーが発生すると、例外条件が生じる。たとえば、identifier-1 のサイズが小さいため、生成された XML ドキュメントを含められないなどのエラーがこれに該当する。この場合、XML ドキュメントの生成が停止し、受け取り側 (identifier-1) の内容は不定となる。COUNT IN を指定した場合、identifier-3 には生成された文字位置の数が格納される。この数は 0 から identifier-1 の長さまでとなる。ON EXCEPTION を指定した場合、制御が imperative-statement-1 に移る。ON EXCEPTION 指定が記述されていない場合、NOT ON EXCEPTION 指定が記述されていても無視され、制御が XML GENERATE 文の最後に移される。特殊レジスタ XML-CODE には、例外コードが含まれる。
  22. XML ドキュメントの生成中に例外条件が発生しなければ、制御が imperative-statement-2 に渡される (指定されている場合)。例外条件が発生した場合は、制御が XML GENERATE 文の末尾に移る。ON EXCEPTION (指定した場合) は無視される。XML GENERATE 文の実行後に、特殊レジスタ XML-CODE にはゼロが含まれる。