D customer ds qualified
D id 10a
D value 100a varying
D order ds qualified
D id 10a
D type 10a
D customers ds qualified
D customer likeds(customer) dim(2)
D orderinfo ds qualified
D customer likeds(customer)
D order likeds(order)
<customer id="A34R27K">John Smith</customer>
XML-INTO が「John Smith」を検出するのは customer データ構造 を処理しているときです。この命令は customer データ構造 に value という名前のサブフィールドがあることを検出し、したがって、そのサブフィールド を「John Smith」データ用に使用します。
xml-into customer %xml('customer1.xml'
: 'doc=file datasubf=value');
// customer.id = "A34R27K"
// customer.value = "John Smith"
<customer id="A34R27K">John Smith</customer>
XML-INTO が「John Smith」を検出するのは customer データ構造 を処理しているときです。XML-INTO はデータ構造に対するデータを保持することを通常はサポートしないため、 この XML-INTO 命令は、余分な XML データが原因で、状況コード 00353 で失敗します。
xml-into(e) customer %xml('customer2.xml'
: 'doc=file');
// %error = *on
// %status = 353
<customer id="A34R27K">
<value>John Smith</value>
</customer>
datasubf オプションは 指定されません。XML 文書中に value という名前の通常の XML 要素 があるため、customer データ構造の value サブフィールド は通常の方法で埋められます。datasubf オプションは不要です。
xml-into customer %xml('customer3.xml' : 'doc=file');
// customer.id = "A34R27K"
// customer.value = "John Smith"
xml-into(e) customer %xml('customer3.xml'
: 'doc=file datasubf=value');
// %error = *on
// %status = 353
<orderinfo>
<customer id="A34R27K">John Smith</customer>
<order id="P8H41"><type>telephone</type></order>
</orderinfo>
xml-into orderinfo %xml('customer4.xml'
: 'doc=file datasubf=value');
// orderinfo.customer.id = "A34R27K"
// orderinfo.customer.value = "John Smith"
// orderinfo.order.id = "P8H41"
// orderinfo.order.type = "telephone"
