変更の始まり

case=convert オプションの例

  1. XML 文書に、RPG サブフィールドには有効でない英字を使用した名前が含まれています。
    以下の例の中では次のデータ構造が使用されています。
    D etudiant        ds                  qualified
    D  age                           3p 0
    D  nom                          25a   varying
    D  ecole                        50a   varying
    
    D student         ds                  likeds(etudiant)
    ファイル info.xml に以下の行が含まれていると想定します。
    <Étudiant Nom="Élise" Âge="12">
       <École>Collège Saint-Merri</École>
    </Étudiant>
    1. オプション case=convert ccsid=ucs2 が指定されます。オプション case=convert は、 XML 文書中の名前が、パス内およびサブフィールドのリスト内の RPG 名とマッチングされる前に、 ジョブの *LANGIDSHR 変換テーブルを使用して変換されることを 指定します。名前 ÉtudiantÂge、 および École は、ETUDIANTAGE、 および ECOLE に変換されます。XML データ自体は変換されないため、サブフィールド ecole は、 値「Collège Saint-Merri」を XML 文書中にあるとおりに受け取ります。

      デフォルトのパスは RPG 変数 ETUDIANT の名前であり、これは 実際の XML 名 Étudiant の変換後の形と一致するため、path オプションは必要ありません。

         xml-into etudiant %xml('info.xml'
                              : 'doc=file case=convert '
                              + 'ccsid=ucs2');
         // etudiant.nom = 'Élise'
         // etudiant.age = 12
         // etudiant.ecole = 'Collège Saint-Merri'
    2. RPG データ構造は student という名前です。Étudiant XML 要素 が student データ構造と一致することを示すために、path オプションを指定する必要があります。path オプション は、変換後の XML 名と一致するように path=etudiant と指定されます。
         xml-into student %xml('info.xml'
                             : 'doc=file case=convert '
                             + 'ccsid=ucs2 path=etudiant');
         // student.nom = 'Élise'
         // student.age = 12
         // student.ecole = 'Collège Saint-Merri'
  2. XML 文書に、XML ではサポートされているが RPG 名では使用できない非英数字を使用した名前が含まれています。
    以下の例の中では次のデータ構造が使用されています。
    D employee_info   ds                  qualified
    D  last_name                    25a   varying
    D  first_name                   25a   varying
    D  is_manager                    1a
    
    D emp             ds                  likeds(employee_info)
    ファイル data.xml に以下の行が含まれていると想定します。
    <employee-info is-manager="y">
       <last-name>Smith</last-name>
       <first-name>John</first-name>
    </employee-info>
    1. オプション case=convert が指定されます。ジョブ の *LANGIDSHR テーブルを使用して英字の変換が行われた後、 その次のステップでは、 A-Z でも 0-9 でもない残りの文字が下線文字 に変換されます。XML 名 employee-infois-managerlast-name、 および first-name は、EMPLOYEE_INFOIS_MANAGERLAST_NAME、 および FIRST_NAME に変換されます。

      RPG データ構造名 employee_info は、 XML 名 employee-info の変換後の形 EMPLOYEE_INFO に 一致するため、path オプションは必要ありません。

         xml-into employee_info %xml('data.xml'
                              : 'doc=file case=convert ');
         // employee_info.last_name = 'Smith'
         // employee_info.first_name = 'John'
         // employee_info.is_manager = 'y'
    2. RPG データ構造は emp という名前です。employee-info XML 要素 が emp データ構造と一致することを示すために、path オプションを指定する必要があります。path オプション は、変換後の XML 名と一致するように path=employee_info と指定されます。
         xml-into emp %xml('data.xml'
                         : 'doc=file case=convert '
                         + 'ccsid=ucs2 path=employee_info' );
         // emp.last_name = 'Smith'
         // emp.first_name = 'John'
         // emp.is_manager = 'y'
  3. XML 文書には、2 バイト・データを使用した名前が含まれています。
    以下の例の中では次の定義が使用されています。
    D employee_info_  ds                  qualified
    D  last_name_                   25a   varying
    D  first_name_                  25a   varying
    D  is_manager_                   1a
    ファイル data.xml に以下の行が含まれていると想定します。ここで、「DBCS」は 2 バイト・データを表します。
    <employee_info_DBCS is_manager_DBCS="y">
       <last_name_DBCS>Smith</last_name_DBCS>
       <first_name_DBCS>John</first_name_DBCS>
    </employee_info_DBCS>

    オプション case=convert が指定されます。ジョブ の *LANGIDSHR テーブルを使用して英字の変換が行われた後、 その次のステップでは、DBCS データおよび関連付けられたシフトアウトおよびシフトイン文字 を含めて、A-Z でも 0-9 でもない残りの文字が、下線文字に変換されます。このステップの後、XML 名 last_name_DBCS は 変換後は LAST_NAME_____ になります。次のステップでは、 元の名前に含まれている下線も含めて、残りの下線がすべてマージされて 1 つの 下線になります。結果としてできる名前は LAST_NAME_ です。

    xml-into employee_info_ %xml('data.xml'
                         : 'doc=file case=convert '
                         + 'ccsid=ucs2');
    // employee_info_.last_name_ = 'Smith'
    // employee_info_.first_name_ = 'John'
    // employee_info_.is_manager_ = 'y'
  4. XML 文書に、先頭が 2 バイト・データの名前が含まれています。
    以下の例の中では次の定義が使用されています。
    D employee_info   ds                  qualified
    D  last_name                    25a   varying
    D  first_name                   25a   varying
    D  is_manager                    1a
    ファイル data.xml に以下の行が含まれていると想定します。ここで、「DBCS」は 2 バイト・データを表します。
    <DBCS_employee_info DBCS_is_manager="y">
       <DBCS_last_name>Smith</DBCS_last_name>
       <DBCS_first_name>John</DBCS_first_name>
    </DBCS_employee_info>

    オプション case=convert が指定されます。非英数字から単一の下線文字への変換が行われた後、 名前 DBCS_last_name は 変換後は _LAST_NAME になります。RPG は下線で始まる名前をサポートしていないため、 最初の下線は削除されます。変換後の最終的な名前は LAST_NAME です。

    xml-into employee_info %xml('data.xml'
                             : 'doc=file case=convert '
                             + 'ccsid=ucs2');
    // employee_info.last_name = 'Smith'
    // employee_info.first_name = 'John'
    // employee_info.is_manager = 'y'
変更の終わり