以下の例の中では次の定義が使用されています。
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>
- 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'
- データ構造 empInfo2 に対してオプション allowextra が指定されていません。
XML 文書に含まれる "emp" 要素の数が RPG 配列には多すぎるため、
XML-INTO 命令は状況コード 00353 で失敗します。
xml-into(e) empInfo2
%XML('emp.xml' : 'doc=file path=employees');
// %error = *on
// %status = 353
- 構造 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) = ' '