変更の始まり

サブフィールド配列に対して余分な要素がある場合の allowextra オプションの例

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

D empInfo2        DS                   QUALIFIED
D   emp                                LIKEDS(employee)
D                                      DIM(2)

D empInfoAway     DS                   QUALIFIED
D   emp                                LIKEDS(employee)
D                                      DIM(2)
D   away                        10A    DIM(2)
ファイル emp.xml に以下の行が含まれていると想定します。
<employees>
 <emp><name>Jack</name><type>Normal</type></emp>
 <emp><name>Mary</name><type>Manager</type></emp>
 <emp><name>Sally</name><type>Normal</type></emp>
</employees>
  1. XML 文書には 3 つの emp XML 要素 があり、RPG emp 配列には 2 つしか要素がないため、データ構造 empInfo2 には オプション allowextra=yes を指定する必要があります。
      xml-into empInfo2
               %XML('emp.xml'
                  : 'doc=file allowextra=yes path=employees');
      // empInfo2.emp(1)    .name = 'Jack'    .type = 'Normal'
      // empInfo2.emp(2)    .name = 'Mary'    .type = 'Manager'
  2. データ構造 empInfo2 に対してオプション allowextra が指定されていません。 XML 文書に含まれる "emp" 要素の数が RPG 配列には多すぎるため、 XML-INTO 命令は状況コード 00353 で失敗します。
      xml-into(e) empInfo2
               %XML('emp.xml' : 'doc=file path=employees');
      // %error = *on
      // %status = 353
  3. 構造 empInfoAway には 2 つの emp 要素 と 2 つの away 要素が必要です。XML 文書に含まれているのは 3 つの emp 要素 とゼロ個の away 要素です。オプション allowextra=yes allowmissing=yes が 指定されているため、emp および away XML 要素 の数がどのような数でも、命令は成功します。余分な emp 要素および欠落している away 要素 は無視されます。
      xml-into empInfoAway
               %XML('emp.xml' : 'allowextra=yes ' +
                                'allowmissing=yes ' +
                                'path=employees ' +
                                'doc=file');
      // empInfoSite.emp(1)  .name = 'Jack'    .type = 'Normal'
      // empInfoSite.emp(2)  .name = 'Mary'    .type = 'Manager'
      // empInfoSite.away(1) = ' '
      // empInfoSite.away(2) = ' '
変更の終わり