変更の始まり

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)
  1. 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"
  2. 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
  3. 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
  4. 複雑なデータ構造の場合、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"
変更の終わり