nsprefix オプションの例
- 以下の例の中では次の定義が使用されています。
D info DS QUALIFIED D type 25A VARYING DIM(2) D ns_type 10A VARYING DIM(2) D qty 10I 0 D price 7P 3 D ns_price 10A VARYINGファイル info3.xml に以下が含まれていると想定します。<abc:info xmlns:abc="http://www.abc.xyz" xmlns:def="http://www.def.xyz"> <abc:type>Chair</abc:type> <abc:qty>3</abc:qty> <def:type>Modern</def:type> <abc:price>79.99</abc:price> </abc:info>RPG プログラマーが、RPG サブフィールドのうちのいくつかと一致する XML 名に 使用される名前空間を取得できるように、XML-INTO のオプション ns=remove nsprefix=ns_ が 指定されます。オプション nsprefix=ns_ は、 NS_ で始まるサブフィールドが、名前空間値を保持する候補であることを 示します。
この XML 文書には、RPG サブフィールド TYPE にマップされる 要素が、abc:type と def:type の 2 つあります。
名前空間が除去された後、名前が type の XML 要素が 2 つあるため、TYPE サブフィールド は DIM(2) を指定して定義されます。NS_TYPE サブフィールド も DIM(2) を指定して定義されていて、XML-INTO は、 TYPE サブフィールドに一致する XML 名の各オカレンスの名前空間値を入れることができます。
XML-INTO は、XML 名 abc:type を処理するときに、TYPE(1) サブフィールド を値 'Chair' に設定し、NS_TYPE(1) サブフィールド を値 'abc' に設定します。
XML-INTO は、XML 名 def:type を処理するときに、 TYPE(2) サブフィールドを値 'Modern' に設定し、 NS_TYPE(2) サブフィールドを値 'def' に設定します。
XML-INTO は、XML 名 abc:qty を処理するときに、QTY サブフィールド を値 3 に設定します。NS_QTY という名前のサブフィールドはないため、 名前空間値がサブフィールドに保存されることはありません。
XML-INTO は、XML 名 abc:price を処理するときに、PRICE サブフィールド を値 79.99 に設定し、NS_PRICE サブフィールドを値 'abc' に設定します。
xml-into info %xml('info3.xml' : 'doc=file ns=remove nsprefix=ns_'); // info.type(1) = 'Chair' // info.ns_type(1) = 'abc' // info.type(2) = 'Modern' // info.ns_type(2) = 'def' // info.qty = 3 // info.price = 79.99 // info.ns_price = 'abc'