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.