XML 実装

XML データ エンコーディングはレコードに基づいており、大部分のエンコーディングが COBOL のデータ レコードとして容易に表現できます。まず、XML のストリームの例を示します。

<?xml version="1.0"?>
<group elementNumber=1235 >
   <elementAlpha>Alpha value</elementAlpha>
</group>

この XML ストリームは、XML 構文拡張を含む次の COBOL コードに直接格納できます。

01  xmls-group                    identified by "group".
    05  xmls-Number     pic 9(18) identified by 
        "elementNumber" is attribute.
    05  xmls-Alpha      pic x(80) identified by 
        "elementAlpha".

これは簡単な例です。ただし、可変タグの指定や、不規則でネストしたオカレンス、異なるデータ型の混在、オプションの要素といった、より複雑なさまざまな構文にも対応できます。

COBOL アプリケーション内で XML レコードを表現すると、そのレコードをアプリケーション内で送受信できます。レコードのやり取りには、OPEN、READ、WRITE、CLOSE など、標準的な入出力動詞を使用します。変換やエンコード、および必要なすべての入力処理は、ランタイム システムで自動的に実行されます。たとえば、上の例に示した XML ストリームは、次の短いコードだけで生成し、ファイル (out.xml) に格納できます。

$set preprocess(prexml) endp    
 select xml-stream assign "out.xml"
           organization  is xml   
           document-type is "group"
           file status is xml-bookdb-status.
     xd xml-stream.
     01  xmls-group                identified by "group".
         05  xmls-Number pic 9(18) 
             identified by "elementNumber" is attribute.
         05  xmls-Alpha  pic x(80) 
             identified by "elementAlpha".
     working-storage section.
     01  xml-bookdb-status         pic s9(9) comp.
 
     move 1235                     to xmls-Number
     move "Alpha value"            to xmls-Alpha
     open output xml-stream
     write xmls-group
     close xml-stream
     stop run.