変更の始まり

すべてのサブフィールドに対してデータ数が不十分な場合の allowmissing オプションの例

以下の例の中では次の定義が使用されています。
D qualName        DS                   QUALIFIED
D   name                        10A
D   lib                         10A

D copyInfo        DS                   QUALIFIED
D   from                               LIKEDS(qualName)
D   to                                 LIKEDS(qualName)
ファイル cpyA.xml に以下の行が含まれていると想定します。
 <?xml version='1.0' ?>
  <copyInfo>
  <to><name>MYFILE</name><lib>*LIBL</lib></to>
  <from name="MASTFILE" lib="CUSTLIB"></from>
 </copyInfo>
ファイル cpyB.xml に以下の行が含まれていると想定します。
<copyInfo>
 <from><name>MASTER</name><lib>PRODLIB</lib></from>
 <to><name>MYCOPY</name></to>
</copyInfo>
  1. データ構造 copyInfo には fromto という 2 つの サブフィールドがあり、各サブフィールドに namelib という 2 つのサブフィールドがあります。 ファイル cpyA.xmlcopyInfo 構造と 完全に一致しています。したがって、allowmissing オプションは不要です。
      xml-into copyInfo %XML('cpyA.xml' : 'doc=file');
      // copyInfo.from  .name = 'MASTFILE  ' .lib = 'CUSTLIB   '
      // copyInfo.to    .name = 'MYFILE    ' .lib = '*LIBL     '
  2. ファイル cpyB.xml では、XML 要素 copyinfo.tolib サブフィールド が欠落しています。XML 文書でのサブフィールドの欠落を許容するためには、オプション allowmissing=yes の 指定が必要です。 copyInfo 構造は命令の前にクリアされるため、 プログラムはどのサブフィールドにデータが割り当てられなかったのかを判別できます。
      clear copyInfo;
      xml-into copyInfo %XML('cpyB.xml'
                         : 'doc=file allowmissing=yes');
      // copyInfo.from  .name = 'MASTER    ' .lib = 'PRODLIB   '
      // copyInfo.to    .name = 'MYCOPY    ' .lib = '          '
      if copyInfo.from.lib = *blanks;
        copyInfo.from.lib = '*LIBL';
      endif;
      if copyInfo.to.lib = *blanks;
        copyInfo.to.lib = '*LIBL';
      endif;
変更の終わり