私は、COBOLメインフレームシステムが作成したディスクからxmlファイルを読み取るプロジェクトに取り組んでいます。このxmlファイルに次のような特定の命名構造が必要です。
<Orders>
<Order>
<Data>
...
</Data>
</Order>
<Order>
<Data>
...
</Data>
</Order>
<Order>
<Data>
...
</Data>
</Order>
</Orders>
この命名構造でCOBOL開発者から学んだ問題は、「Order」と「Data」がCOBOLで予約されている名前であるため、使用できないと言っていることです。これは本当に事実ですか、それとも、COBOLがxmlファイルを作成しているときにxml出力が必要なものになる方向を誰かが指摘する可能性がありますか?
IBM Enterprise COBOLには、COBOLデータ構造からXMLを生成するために使用されるXMLGENERATEステートメントがあります。生成されるタグ名は、デフォルトでは、構造内のデータ項目の名前です。データ項目の名前を予約済みのCOBOLワードにすることはできません。
IBM Enterprise COBOLのバージョン5以降、データ項目の名前ではないデータ項目のタグ名を生成するメカニズムがあります。これは、XMLGENERATEステートメントのNAME句です。
このような構造...
01 WS-ORDERS.
05 WS-ORDER OCCURS 2.
10 WS-DATA PIC X(4096).
... XML GENERATEを介して処理すると、通常は...
<WS-ORDERS><WS-ORDER><WS-DATA>...</WS-DATA></WS-ORDER><WS-ORDER><WS-DATA>...</WS-DATA></WS-ORDER></WS-ORDERS>
...しかし、NAMEフレーズを使用しています...
XML GENERATE WS-BUFFER FROM WS-ORDERS
NAME WS-ORDERS 'ORDERS'
WS-ORDER 'ORDER'
WS-DATA 'DATA'
END-XML
...あなたが望むものをあなたに与えるべきです。それはただのフリーハンドですが、あなたはその考えを見ることができると思います。
COBOLコンパイラーがXMLGENERATEのNAME句をサポートするバージョンにアップグレードされていない可能性があります。そのような最後のバージョンは4.2で、2021年9月30日にサービスを停止します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加