datasubf オプションの例
以下の例の中では次の定義が使用されています。
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)
- datasubf オプションは value サブフィールドを指定します。
ファイル customer1.xml に以下が含まれていると想定します。
<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" - datasubf オプションは指定されません。
ファイル customer2.xml に以下が含まれていると想定します。
<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 - XML 文書中に、datasubf オプションと同じ名前の通常の XML 要素があります。
ファイル customer3.xml に以下が含まれていると想定します。
<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"datasubf=value オプション が指定されます。XML 文書中に、value という名前の通常の XML 要素があります。 datasubf オプションの名前を持つスカラー・サブフィールドを XML 属性 または XML 要素で埋めることはできないため、この XML-INTO 命令は状況コード 00353 で 失敗します。xml-into(e) customer %xml('customer3.xml' : 'doc=file datasubf=value'); // %error = *on // %status = 353 - 複雑なデータ構造の場合、datasubf オプションが必要な場合もあれば、
不要な場合もあります。
ファイル customer4.xml に以下が含まれていると想定します。
<orderinfo> <customer id="A34R27K">John Smith</customer> <order id="P8H41"><type>telephone</type></order> </orderinfo>datasubf=value オプション が指定されます。customer データ構造サブフィールドには value サブフィールド があり、したがって datasubf オプションが使用されます。order データ構造サブフィールド には value サブフィールドはないため、datasubf オプション は無視されます。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"
