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.