コピーブックとスキーマの生成

XML 構文拡張を含むコピーブックおよび XML スキーマは、既存のコピーブックや COBOL プログラムから生成できます。生成されたコピーブックには、既存の COBOL プログラムを XML に対応させるための情報が含まれています。また、生成されたスキーマ ファイルに準拠し、データを含む XML ドキュメントを生成すると、それを COBOL プログラムの入力として使用できます。コピーブックおよびスキーマを生成するには、次の形式で cbl2xml を実行します。

cbl2xml filename 
        [-c cobolFile]
        [-x schemaFile]
        [-d directiveFile]
        [-nocountin]        

生成されるスキーマに準拠する XML 情報を COBOL プログラムから利用できるようにするため、cbl2xml は新しいレコードを含むコピーブックを生成します。この新しいレコードに、XML の操作に必要な XML 構文拡張が含まれています。次にレコード生成の例を示します。この例は、パラメーターとして -c または -x のどちらも指定していないことを前提としています。

XML 構文拡張を含む、生成されたコピーブック

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) を次に示します。

COBOL ファイル定義から生成された XML スキーマ

<?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 に指定されています。