ハイフンを含んでいるデータ名を持つ項目のあるデータ構造から XML 文書を生成すると、生成された XML にはハイフンを含んでいるエレメント名が含まれることになります。 この例は、エレメント値にハイフンが含まれる場合それをそのままにして、エレメント名のハイフンを変換する方法を示しています。
1 Customer-Record.
2 Customer-Number pic 9(9).
2 First-Name pic x(10).
2 Last-Name pic x(20).
上のデータ構造にいくつかのサンプル値を取り込み、XML をそれから直接生成し、その後プログラム Pretty (例: XML の生成に示されています) を使用してフォーマット設定すると、結果は次のようになります。
<Customer-Record>
<Customer-Number>12345</Customer-Number>
<First-Name>John</First-Name>
<Last-Name>Smith-Jones</Last-Name>
</Customer-Record>
エレメント名はハイフンを含み、エレメント Last-Name の内容もハイフンを含んでいます。
この XML 文書がデータ項目 xmldoc の内容であり、charcnt がこの XML 文書の長さに設定されていると想定した場合、以下のコードを使用することにより、エレメント名の中のすべての ハイフンを下線に変更し、エレメント値は未変更のままにすることができます。
1 xmldoc pic x(16384).
1 charcnt comp-5 pic 9(5).
1 pos comp-5 pic 9(5).
1 tagstate comp-5 pic 9 value zero.
. . .
dash-to-underscore.
perform varying pos from 1 by 1
until pos > charcnt
if xmldoc(pos:1) = '<'
move 1 to tagstate
end-if
if tagstate = 1 and xmldoc(pos:1) = '-'
move '_' to xmldoc(pos:1)
else
if xmldoc(pos:1) = '>'
move 0 to tagstate
end-if
end-if
end-perform.
データ項目 xmldoc 内の改訂された XML 文書には、以下に示すようにエレメント名の中にハイフンの代わりに 下線があります。
<Customer_Record>
<Customer_Number>12345</Customer_Number>
<First_Name>John</First_Name>
<Last_Name>Smith-Jones</Last_Name>
</Customer_Record>