外部形式でのデータの生成 - XML 表記

テンプレート (コピーブック) によって示される形式を使用した従来の定様式データ・セットまたはファイルは、外部形式で表されます。これは、入力テンプレートによって判別される文字形式のデータに外部形式規則を適用することで可能になります。コピー操作の出力には、さまざまなプラットフォームのアプリケーションで認識できる外部形式が設定されています。

コピー操作の出力を「整形式の」 XML データにするように要求できます。(XML の概念および用語については、www.w3.org の「XML Specification 1.0」を参照してください)。また、入力テンプレートから派生する出力フォーマットも、XML 規則に準拠しています。出力ファイルの標準レコードは、入力レコードの基本データ項目に対応する XML 行であり、以下の形式で示されます。
start-tag content end-tag
ここで、start-tag および end-tag にはデータ項目名が含まれ、content はそのデータ項目の文字表記を示します。
に示したコピーブックを使用した場合、
01 ORDERS.
   05 ORDER-ID        PIC X(5).
   05 CUSTOMER-ID     PIC X(5).
   05 ORDER-DATE.
      10 ORDER-YEAR   PIC 9(4).
      10 ORDER-MONTH  PIC 9(2).
      10 ORDER-DAY    PIC 9(2).
また、20050110 の日付で作成された「Order ID」が O1002、「Customer ID」が C0015 の入力レコードに対応する XML 行のシーケンスは、次のようになります。
<ORDER>
  <ORDER-ID>O1002</ORDER-ID>
  <CUSTOMER-ID>C0015</CUSTOMER-ID>
  <ORDER-DATE>
    <ORDER-YEAR>2005</ORDER-YEAR>
    <ORDER-MONTH>01</ORDER-MONTH>
    <ORDER-DAY>10</ORDER-DAY>
  </ORDER-DATE>
</ORDER>

File Manager は、コピーブックまたはテンプレートで使用される名前が XML 仕様に準拠した正当な XML 名であることを前提としています。そのため、FILLER 以外の各データ名が、その収容グループの中で固有かどうかは検査されません。ただし、先頭に文字または下線がない名前は、下線の接頭部が付けられます。

基本データの形式は、入力テンプレートまたはコピーブックによって異なります。結果的には「Print Utility (印刷ユーティリティー)」からの出力に類似しています。数値データは文字表記に変換されます。File Manager は、先行ゼロ、先行ブランク、末尾ブランクの除去や正符号のスキップなどを行います。文字データは、末尾ブランクが除去された形で XML の内容に組み込まれます (先行ブランクはデータ内では有効であるため、抑制されません)。

XML 出力では、その値でデータを表示できない場合があります。データがデータ・タイプ要件と一致しない場合があります。例えば、数値フィールドに非数値文字が含まれている場合です。文字データには、印刷不能文字および特殊文字を含めることができます。印刷不能文字は、デフォルトの (またはカスタマイズされた) FMNTRTBS 変換テーブルによって定義されます。次の特殊文字は、XML 出力では特殊な意味を持つため、別の表記が必要になります。
  • 「>」(より大きい)
  • 「<」(より小さい)
  • 「'」(アポストロフィ)
  • 「'」(引用符)
  • 「&」(アンパーサンド)

XML 出力は、入力データの文字セット (EBCDIC、DBCS) で生成されますが、オプショナルで Unicode に変換することができます。File Manager は、該当するインフラストラクチャーおよびサービスが存在するものと仮定して、Unicode に対する標準の z/OS® サポートを使用します。Unicode への変換は、変換環境が作成され、アクティブにされた場合に可能になります (詳しくは、「z/OS Support for Unicode Using Conversion Services」を参照してください)。File Manager は、EBCDIC を CCSID 0037、DBCS (MBCS) を 0939、Unicode を 1200 とみなします。

XML 出力の形式および内容の調整は、以下を指定して行うことができます。
  • 特殊文字の表示方法
  • 印刷不能文字の表示方法
  • 無効データの表示方法
  • FILLER の組み込みまたは無視
  • 再定義の組み込みまたは無視
  • XML 出力の取得形式 (入力データの文字セット (EBCDIC、DBCS) または Unicode)
  • より分かりやすい表示にするためにネスティングする XML タグの各論理レベル (論理レベル 1、2、3 など) をインデントする場合に使用するブランクの数。これは、コピーブックで指定されたユーザー・レベルを File Manager が再番号付けすることによって割り当てられます (例えば、01、05、10 など)。
XML 出力には、別の行として、またはデータ・エレメント名の後の属性として組み込まれた追加情報が含まれます。それらは次のように記述されます。
  • 入力データ・セット名およびテンプレート (コピーブック)。例:
    <INPUT FILE="FMN.SEQ1" FORMAT="FMN.TEMPLATE(SEQ1)">
  • レコード・シーケンス番号。キー付きデータの場合はキー値。例:
    <ORDER SEQ_NUMBER="998" KEY="O1002">
  • オカレンス番号 (データ・エレメントが配列の場合)。例:
    <MONTH-END ITEM_NUMBER="(2)">24</MONTH-END>
  • エレメント内容の中にあり、パラメーター処理に従って変換された印刷不能文字または特殊文字。例:
    <EMP-ID NONPRINT_CHAR="REPLACE">AA..17</EMP-ID>
    <JOB-ID SPECIAL_CHAR="ESCAPE">A15&B32</JOB-ID>
  • 数値データを文字ストリングに変換する際に満たされる無効データ条件。エレメントはパラメーター処理に従って提供されます。例えば、次のものはスキップされます。
    <EMP-SALARY INVALID_DATA="SKIP"></EMP-SALARY>

無効データ、印刷不能文字、および特殊文字の場合、属性として記述されるのは、指定されたパラメーターではなく個々のデータの実処理です。例えば、データ・フィールドに印刷不能文字と特殊文字の両方が含まれており、対応するパラメーターに SKIP および REPLACE が指定されている場合、その内容はスキップされます。この場合、REPLACE は、SKIP と矛盾するため無視されます。一般に、データ・フィールドに特殊文字と印刷不能文字の両方が含まれる場合、SKIP および HEX は他のすべてのオプションより優先されます。CDATA は、SKIP および HEX より優先度は低いですが、その他のオプションよりも高くなります。

XML 出力には、「Copy Utility (コピー・ユーティリティー)」で許可されたあらゆるデータ・セットを指定できます (VSAM KSDS を除く)。この出力データ・セットの長さは固定にも可変にもできます。XML 行ごとに 1 つの出力レコードを作成する場合は、生成される最大の XML 行が最大論理レコード長 (LRECL) に収まるかどうかを確認してください。行のサイズは、テンプレート内で使用される名前、値の文字表記の最大長、および特殊文字、印刷不能文字、無効データが処理される方法などによって異なります。特殊文字の中には、ストリング、16 進形式で提供されたデータなどに置換されるものもあります。これにより、行の長さは、予想よりも相当長く指定することができます。XML 行をそれぞれ単一の出力レコードに置く際に、そのレコードに個々の XML 行が収まるほどの十分な長さがない場合、File Manager は XML 行を切り捨て、処理を終了してエラーを報告します (また、バッチ内にある場合は、切り捨てエラーを示す調整可能条件コード 8 を設定します)。XML 行を複数の出力レコード幅で表示できるようにする場合は、出力データ・セットに任意の論理レコード長を指定することができます。

XML 形式の出力を生成するには、以下のようにして「Copy From (コピー元)」パネルを使用します。

  1. 「Primary Options Menu (基本オプション・メニュー)」パネルから、オプション「3. Utilities (ユーティリティー)」、オプション「3. Copy (コピー)」の順に選択します。File Manager に「Copy Utility (コピー・ユーティリティー)」パネルが表示されます。
  2. 「元」データ・セットの詳細を入力します。
  3. 「元」コピーブックまたはテンプレートの詳細を入力します。「元」データ・セットのデータを記述するコピーブックまたはテンプレートを指定するには、「Data set name (データ・セット名)」および「Member (メンバー)」入力フィールドの組み合わせを使用します。コピー用データは、レコード・レベルまたはフィールド・レベルのどちらでも 選択することができます。
    • レコード・レベル選択では、「元」テンプレートでレコード ID 基準およびレコード選択基準を設定します。
    • フィールド・レベル選択では、「元」テンプレートを「宛先」テンプレートと一緒に使用して、「宛先」テンプレートで、選択したフィールド、フィールド属性、およびフィールド・マッピングを指定します。
    レコード・レベルとフィールド・レベル選択の両方を指定すると、File Manager は、最初にレコード・レベルでデータを選択してからフィールド・レベルで選択します。
  4. 「Export (エクスポート)/Import (インポート)」「1」を選択すると、出力が XML フォーマットになります。
  5. コピーブック/テンプレートの処理オプションで、「1. Above (上の指定)」または「3. Create dynamic (動的作成)」を選択し、Enter キーを押します。

    オプション 1 を選択した場合、File Manager は「Copy To (コピー宛先)」パネルの拡張版を表示します。このパネル形式では、追加のオプションを指定できます。

    オプション 3 を選択した場合には、動的テンプレートを作成する必要があります。一度作成すると、File Manager は「Copy To (コピー宛先)」パネルの拡張版を表示します。

  6. 「宛先」データ・セットの詳細を入力します。
  7. 出力の生成をカスタマイズします (オプショナル)。XML の場合、生成と分かりやすい表示の効果をあげるために、印刷不能文字および無効データの表示方法、充てん文字および再定義の組み込みの有無、XML タグのネスティングで後続レベルをネストする際のインデント方法などを指定することができます。
  8. [Enter] を押します。File Manager が「元」データ・セットから選択されたデータを XML フォーマットで生成し、「宛先」データ・セットに書き込みます。

関連トピック