XML 構文拡張を含むコピーブックおよび XML スキーマは、既存のコピーブックや COBOL プログラムから生成できます。生成されたコピーブックには、既存の COBOL プログラムを XML に対応させるための情報が含まれています。また、生成されたスキーマに準拠し、データを含む XML ドキュメントを生成すると、そのドキュメントを COBOL プログラムの入力として使用できます。コピーブックおよびスキーマを生成するには、次の形式で cbl2xml を実行します。
cbl2xml filename [-c cobolFile] [-x schemaFile] [-d directiveFile] [-nocountin]
生成されるスキーマに準拠する XML 情報を COBOL プログラムから利用できるようにするため、cbl2xml は新しいレコードを含むコピーブックを生成します。この新しいレコードに、XML の操作に必要な XML 構文拡張が含まれています。次にレコード生成の例を示します。この例は、パラメーターとして -c または -x のどちらも指定していないことを前提としています。
cbl2xml で処理する前の、元のコピーブック record.cpy の内容は次のとおりです。
01 A-FILE-RECORD. 05 A-FILE-ITEM PIC XX.
次に示す XML 構文拡張を含む新しいコピーブック record-cbl2xml.cpy が生成されます。
01 a-file-record identified by "a-file-record" count in a-file-record-count. 02 a-file-item pic X(2) identified by "a-file-item" count in a-file-item-count.
XML 構文拡張の詳細については、「XML 構文拡張」を参照してください。
プログラムを XML に対応させるには、この record-cbl2xml.cpy の名前を record.cpy に変更するか、または元の record.cpy 内のレコードを record-cbl2xml.cpy 内のレコードで置き換える必要があります。
COBOL プログラム全体を XML に対応させる手順も、XML 構文拡張を含むコピーブックの生成と同様です。この場合には、cbl2xml はプログラム内で見つかった各レコードと等価の情報を含むスキーマおよびプログラムを生成します。
record.cpy を基に cbl2xml が生成したスキーマ (record.xsd) を次に示します。
<?xml version="1.0" encoding="utf-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <element name="a-file-record"> <complexType> <sequence> <element name="a-file-item"> <simpleType> <restriction base="string"> <length value="2"/> </restriction> </simpleType> </element> </sequence> </complexType> </element> </schema>
次の表は、このスキーマに含まれる各種のタグの意味を、表現するレコードのコンテキストで説明しています。
スキーマ内のタグ | 説明 |
---|---|
<element name="a-file-record"> |
集団レベルのデータ名 (A-FILE-RECORD) を定義しています。この要素が、集団内でデータ項目を定義しているすべての要素の親要素になります。 |
<complexType> |
集団レコードに 1 つ以上の従属データ項目が含まれることを示しています。 |
<sequence> |
従属レコードを定義する一連のタグの開始を示しています。 |
<element name="a-file-item"> |
従属データ項目 A-FILE-ITEM のデータ名の定義。要素タグが、他の要素タグによって囲まれている (子要素) ため、この項目は従属データ項目になります。 |
<simpleType> |
データ項目に従属データ項目が存在しないことを示しています。 |
<restriction base="string"> |
データの制約を定義しています。この場合には、データは COBOL データ レコードの PIC XX 句の定義に従い、文字列に限定されています。 |
<length value="2"/> |
レコードの長さを定義しています。この場合は、COBOL データ レコードの PIC XX の定義に従い、長さは 2 に指定されています。 |