変更の始まり

非配列の変数での path オプションの例

以下の例の中では次の定義が使用されています。
D info            DS
D   num                          5P 2

D xmlDoc          S           1000A    VARYING

D qualDs          DS                   QUALIFIED
D   subf                        10A
  1. XML 名 myinfo が RPG 名 info と 異なっているため、XML 要素の名前を指定するために path オプションが使用されます。
     /free
    
      xmlDoc = '<myinfo><num>123.45</num></myinfo>';
      xml-into info %XML(xmlDoc : 'path=myinfo');
      // num = 123.45
  2. path オプションは指定されませんが、RPG 名 info と XML 名 myinfo は異なっています。XML 文書 に info 要素は含まれていないため、XML-INTO 命令は状況コード 00353 で 失敗します。
      xmlDoc = '<myinfo><num>456.1</num></myinfo>';
      xml-into(e) info %XML(xmlDoc');
      // %error = '1'
      // %status = 353
  3. 必要な XML 要素は XML 文書中の最外部の要素ではないため、 必要な XML 要素を位置指定するために path オプションが使用されます。
      xmlDoc = '<data><info><num>-789</num></info></data>';
      xml-into info %XML(xmlDoc : 'path=data/info');
      // num = -789
  4. XML-INTO 命令のターゲットは、データ構造ではなくサブフィールド です。path オプションは、num RPG サブフィールドに 一致する num XML 要素へのパスを指定しています。
      xmlDoc = '<data><info><num>.3</num></info></data>';
      xml-into num %XML(xmlDoc :
                        'path=data/info/num');
      // num = .3
  5. XML 文書はファイルに入っています。したがって、doc オプション と path オプションの両方の指定が必要です。
      //
      //    myfile.xml:
      //      <data>
      //       <val>17</val>
      //      </data>
      xml-into num %XML('myfile.xml' : 'doc=file path=data/val');
      // num = 17
  6. 修飾されたサブフィールドが XML-INTO 命令の ターゲットとして指定されます。サブフィールド名 subf は XML 名 subf と 一致しているため、path オプションは不要です。
      xmlDoc = '<subf>-987.65</subf>';
      xml-into qualDs.subf %XML(xmlDoc);
      // qualDs.subf = '-987.65'
  7. XML 文書には、要素のレベルが qualdssubf の 2 つあります。 この XML 文書は RPG qualds データ構造に一致していますが、RPG プログラム は XML 命令のターゲットとして qualds.subf と指定しています。 デフォルトのパスはサブフィールドの名前なので、path オプション を path=qualds/subf と指定する必要があります。これには、 変数を設定するためのデータが入っている XML 要素も含めて、必要な XML 要素へのパスにあるすべての XML 要素の名前が含まれていなければ なりません。
      xmlDoc = '<qualds><subf>-987.65</subf></qualds>';
      xml-into qualDs.subf %XML(xmlDoc :
                         'path=qualds/subf);
      // qualDs.subf = '-987.65'
変更の終わり