例 24

  OPTION COPY
  OUTFIL REMOVECC,
   HEADER1=(C'<?xml version="1.0"?>',/,
     3:C'<booklist>'),
   BUILD=(5:C'<book>',/,
     7:1,20,JFY=(SHIFT=LEFT,LEAD=C'<title>',TRAIL=C'</title>',
       LENGTH=36),/,
     7:24,15,SQZ=(SHIFT=LEFT,LEAD=C'<author>',MID=C', ',
       TRAIL=C'</author>',LENGTH=33),/,
     5:C'</book>'),
   TRAILER1=(3:C'</booklist>')

この例は、固定位置のフィールドを含む FB 入力レコードから XML ステートメントを生成する方法を示しています。

40 バイトの FB 入力レコードの内容は、次のとおりです。
Modern Poetry          Friedman    KR
Intro to Computers     Chatterjee  CL
Marketing              Maxwell     G

データには、固定位置の 3 つの文字フィールドが含まれています。

42 バイトの FB 出力レコードの内容は、次のとおりです。
<?xml version="1.0"?>
  <booklist>
    <book>
      <title>Modern Poetry</title>
      <author>Friedman, KR</author>
    </book>
    <book>
      <title>Intro to Computers</title>
      <author>Chatterjee, CL</author>
    </book>
    <book>
      <title>Marketing</title>
      <author>Maxwell, G</author>
    </book>
  </booklist>
ここでは、OUTFIL HEADER1 を使用して、各レコード用のタグのセットの前に置く開始タグ (xml および booklist) を生成します。 そして、OUTFIL BUILD を使用して、各レコード用のタグのセットを次のように生成します。
  • 定数を使用して、book 開始タグを生成します。
  • JFY を使用して、title タグと、最初の入力フィールドからのデータを生成します。 LEAD は、レコードからの入力フィールドの前に title 開始タグを生成します。 TRAIL は、入力フィールドからの最後の非ブランク文字の後に title 終了タグを生成します。 JFY は、入力フィールドの最初の非ブランク文字と最後の非ブランク文字の間にある組み込みブランクをそのまま維持します。 LENGTH は、出力長を 36 バイトに拡張して (入力フィールドのデフォルト長である 20 バイトをオーバーライドして)、LEAD および TRAIL ストリングを追加しても切り捨てが行われないようにします。
  • SQZ を使用して、author タグと、2 番目および 3 番目の入力フィールドからのデータを生成します。 LEAD は、レコードからの入力フィールドの前に author 開始タグを生成します。 MID は、2 番目と 3 番目の入力フィールドの間の一連のブランクを、1 つのコンマと 1 つのブランクで置き換えます。 TRAIL は、入力フィールドからの最後の非ブランク文字の後に author 終了タグを生成します。 LENGTH は、出力長を 33 バイトに拡張して (入力フィールドのデフォルト長である 15 バイトをオーバーライドして)、LEAD、MID、および TRAIL ストリングを追加しても切り捨てが行われないようにします。

OUTFIL TRAILER1 を使用して、各レコード用のタグのセットの後に置く booklist 終了タグを生成します。