COBOL2002 使用の手引 手引編

[目次][用語][索引][前へ][次へ]

23.2 構造型データベース(XDM/SD)操作シミュレーション

メインフレームで構造型データベースXDM/SD(Extensible Data Manager/Structured Database)を操作するプログラムをUNIX上でコンパイル,実行できます。このプログラムのコンパイル,実行,テストの方法について説明します。

<この節の構成>
(1) コンパイル方法
(2) 実行方法
(3) 内部的に展開されるCALL文の引数
(4) XDM/SDプログラムのテスト方法の制限事項

(1) コンパイル方法

プログラムのコンパイルまでの手順を次に示します。

  1. データベース情報をCOBOL宣言文に展開する。
    メインフレーム上でXDMのユティリティを使用し,データベース情報であるスキーマ情報,サブスキーマ情報をCOBOL宣言文に展開します。このとき,COBOL宣言文(COPY文で展開される原文)は,XDM E2系ユティリティJXBSAIDを使用して作成します。
    (COBOL宣言文の展開例)
    [図データ]
  2. COBOL宣言文をUNIXに転送する。
    作成したCOBOL宣言文を,ファイル転送プログラムを使用してUNIXに転送します。このとき,UNIX上で受け取るファイル名は"サブスキーマ名スキーマ名.cbl"(上記の例では,HSB1HSC1.cbl)とする必要があります。
  3. プログラムをコンパイルする。
    UNIXに転送されたCOBOL宣言文(COPY展開される原文)は,コンパイル時のSUBSCHEMA SECTION解析中にCOPY文と同様に展開されます。このため,COBOL宣言文の入ったファイルは,登録集原文が展開できるディレクトリ下に置く必要があります。

(2) 実行方法

手続き部に記述したFIND文,FETCH文などのデータベース操作文は,"CALL 'CBLXDMSD' USING 引数 ……"と内部的に展開されます。展開されたCALL文で呼び出されるプログラムでシミュレーションをする場合は,'CBLXDMSD'という名称の関数を作成し,コンパイル,リンクして実行可能ファイルを生成しておきます。この結果,手続き部のデータベース操作文は,'CBLXDMSD'で作成した関数を呼び出せます。

なお,'CBLXDMSD'という名称の関数を,コンパイル,リンクして実行可能ファイルを生成しないときは,コンパイラが提供する,構造型データベース(XDM/SD)操作シミュレーション機能の実行時ライブラリ用ダミールーチンCBLXDMSDが実行されます。

(3) 内部的に展開されるCALL文の引数

CALL文に展開されたデータベース操作文の引数によって,利用者はXDM/SDプログラムをテストできます。内部的に展開されるCALL文の引数の形式を次に示します。

形式
CALL 'CBLXDMSD' USING インタフェースエリア
   DML情報エリア 固有情報エリア (その他の引数) …

データベース操作文で内部的に展開されるCALL文を次に示します。

表23-1 データベース操作文で内部的に展開されるCALL文

データベース操作文 内部的に展開されるCALL文と設定される引数
データベース条件文
CALL 'CBLXDMSD' USING インタフェースエリア
                      ,DML情報エリア
                      ,固有情報エリア
CONNECT文
DISCONNECT文
ERASE文
NULLIFY文
RECONNECT文
CALL 'CBLXDMSD' USING インタフェースエリア
                      ,DML情報エリア
                      ,固有情報エリア
FETCH文1
FIND文
GET文1
MODIFY文
STORE文
CALL 'CBLXDMSD' USING インタフェースエリア
                      ,DML情報エリア
                      ,固有情報エリア
                      ,データ受け渡しエリア2
                    〔,付加機能用情報エリア〕3
FETCH文4
CALL 'CBLXDMSD' USING インタフェースエリア
                      ,DML情報エリア
                      ,固有情報エリア
                      ,データ受け渡しエリア5
GET文4
CALL 'CBLXDMSD' USING インタフェースエリア
                      ,DML情報エリア
                      ,固有情報エリア
                      ,データ受け渡しエリア2
                      ,データ受け渡しエリア5

注※1 DATA AREA指定がありません。

注※2
FROM,INTOで指定したデータ名です。指定しない場合にはサブスキーマ節の先頭のレコードビュー名が使用されます。

注※3
FIND文,DATA AREA指定なしのFETCH文でUSINGを指定したときのデータ名です。〔 〕で囲まれた引数を指定しない場合,引数はBY REFERENCE指定でZERO(4バイトの0)を渡します。

注※4 DATA AREA指定があります。

注※5 DATA AREAで指定したデータ名です。

データベース操作文で内部的に展開されるCALL文の引数を「表23-2 データベース操作文で内部的に展開されるCALL文の引数」に示します。また,各項目の詳細を次の表に示します。

データ受け渡しエリアおよび付加情報エリアでは,各文中に指定されたデータ名が引数になります。指定できるデータ名を次に示します。

FETCH(1)文,FETCH(2)文,GET(2)文は,それぞれ次の文を指します。

(4) XDM/SDプログラムのテスト方法の制限事項

COBOL原始プログラムのコンパイル時,次の部分はエラーチェックの対象となりません。

(a) XDMシステム定義のスキーマ定義にだけ指定され,サブスキーマ節に展開されない部分
(b) XDMシステム定義のサブスキーマ定義にだけ指定され,サブスキーマ節に展開されない部分