以下の例の中では次の定義が使用されています。
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>
- データ構造 copyInfo には from と to という 2 つの
サブフィールドがあり、各サブフィールドに name と lib という 2 つのサブフィールドがあります。
ファイル cpyA.xml は copyInfo 構造と
完全に一致しています。したがって、allowmissing オプションは不要です。
xml-into copyInfo %XML('cpyA.xml' : 'doc=file');
// copyInfo.from .name = 'MASTFILE ' .lib = 'CUSTLIB '
// copyInfo.to .name = 'MYFILE ' .lib = '*LIBL '
- ファイル cpyB.xml では、XML 要素 copyinfo.to に lib サブフィールド
が欠落しています。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;