RPG サブフィールドに対応しない XML データがある場合の allowextra オプションの例
以下の例の中では次の定義が使用されています。
D qualName DS QUALIFIED
D name 10A
D lib 10A
D copyInfo DS QUALIFIED
D from LIKEDS(qualName)
D to LIKEDS(qualName)
D copyInfo3 DS QUALIFIED
D from LIKEDS(qualName)
D to LIKEDS(qualName)
D create 1N
ファイル cpyA.xml に以下の行が含まれていると想定します。
<copyInfo>
<to><name>MYFILE</name><lib>*LIBL</lib></to>
<from name="MASTFILE" lib="CUSTLIB"></from>
</copyInfo>
ファイル cpyC.xml に以下の行が含まれていると想定します。
<copyinfo errors="tolerate">
<to><name>MYFILE</name><lib>MYLIB</lib></to>
<from><name>MASTFILE</name><lib>CUSTLIB</lib></from>
<to><name>MYFILE2</name></to>
</copyinfo>
ファイル cpyD.xml に以下の行が含まれていると想定します。
<copyinfo to="MYLIB/MYFILE">
<from><name>MASTFILE</name><lib>CUSTLIB</lib></from>
</copyinfo>
- データ構造 copyInfo には from と to という 2 つの
サブフィールドがあり、各サブフィールドに name と lib という 2 つのサブフィールドがあります。
ファイル cpyA.xml は copyInfo 構造と
完全に一致しています。したがって、allowextra は
デフォルトで yes に設定されるため allowextra オプションは不要です。
xml-into copyInfo %XML('cpyA.xml' : 'doc=file'); // copyInfo.from .name = 'MASTFILE ' .lib = 'CUSTLIB ' // copyInfo.to .name = 'MYFILE ' .lib = '*LIBL ' - ファイル cpyC.xml の XML 要素 copyinfo には、
一致する RPG サブフィールドがない XML 属性があります。また、
to サブフィールドが複数回指定されています。XML 文書内の余分なサブフィールドを許容するためには、オプション allowextra=yes の
指定が必要です。余分な XML データは無視されます。
xml-into copyInfo %XML('cpyC.xml' : 'doc=file allowextra=yes'); // copyInfo.from .name = 'MASTFILE ' .lib = 'CUSTLIB ' // copyInfo.to .name = 'MYFILE ' .lib = 'MYLIB ' - データ構造 copyInfo3 には、ファイル cpyC.xml にはないサブフィールド create が
あります。cpyC.xml には、
データ構造 copyInfo3 に対して、欠落しているサブフィールドと余分なサブフィールドの両方が含まれています。
allowextra=yes allowmissing=yes の両方のオプションを指定する必要があります。
余分なサブフィールドは無視され、欠落しているサブフィールドは元の値を保持します。
clear copyInfo3; xml-into copyInfo3 %XML('cpyC.xml' : 'allowextra=yes ' + 'allowmissing=yes ' + 'doc=file' + 'path=copyinfo'); // copyInfo3.from .name = 'MASTFILE ' .lib = 'CUSTLIB ' // copyInfo3.to .name = 'MYFILE ' .lib = 'MYLIB ' // copyInfo3.create = '0' (from the CLEAR operation) - ファイル cpyD.xml にある XML 要素 copyInfo は
属性 to を持っています。 属性でサブフィールド
を指定できるのは、サブフィールドが配列でもデータ構造でもない場合のみです。to 属性は予期されていないため、
および、to XML 要素が見つからないため、XML-INTO 命令は状況コード 00353 で失敗します。
xml-into(e) copyInfo %XML('cpyC.xml' : 'doc=file'); // %error = *on // %status = 353 - オプション allowextra=yes allowmissing=yes が指定されることによって、
余分な to 属性は無視され、欠落している to 要素
は許容されます。to サブフィールドは XML-INTO 命令によって変更されません。
copyInfo.to.name = '*UNSET*'; copyInfo.to.lib = '*UNSET*'; xml-into copyInfo %XML('cpyD.xml' : 'doc=file ' + 'allowextra=yes allowmissing=yes'); // copyInfo.from .name = 'MASTFILE ' .lib = 'CUSTLIB ' // copyInfo.to .name = '*UNSET* ' .lib = '*UNSET* '
