ライブラリ ルーチン型定義および呼び出しプロトタイプの使用

制約事項: このトピックで示されているコピーブックを MF 指令と組み合わせて使用する場合は、21 以上のレベルに設定する必要があります。

このシステムには、ライブラリ ルーチン用のコピーブックが 2 つ付属しています。1 つは TYPEDEF で定義された各種のデータ型を含むファイル、もう 1 つは呼び出しプロトタイプを含むファイルです。これらのコピーブックを COBOL プログラムで利用すると、ライブラリ ルーチンの呼び出しをコンパイラで確実に検証できます。

提供されているファイル cbltypes.cpy には、システムのライブラリ ルーチンで必要なすべての型が含まれています。COBOL プログラム内で使用されるデータ項目名との競合を回避するため、これらのデータ型には CBLT- で始まる名前が付けられています。型が基本項目でない場合は、従属する要素の先頭に CBLTE- が付きます。

また、システム ライブラリ ルーチンのすべてのプロトタイプが含まれているファイル cblproto.cpy も提供されています。プロトタイプのパラメーターが ANY で宣言されている場合もありますが、これは可変長データの入力を示します。

ライブラリ ルーチンのパラメーターについて説明している部分では、システムで定義された型の参照に CBLT- で始まる名前を使用します。また、システム定義の基本項目には、CBLTE- で始まる名前を使用します。これらの集団項目の変数を宣言する場合は、基本項目の宣言は行いません。宣言した変数を使用する箇所で、その基本項目も必要に応じて使用できます。ただし、同じ集団項目の変数を複数宣言した場合は、これらの各変数が同じ名前の基本項目を持つことになるため、参照する変数をコンパイラに識別させるための手段が必要です。

プログラムでは、コピーブック cblproto.cpy を指定する必要があるだけです。コピーブックは、プログラムの見出し部の前に指定する必要があります。コピーブック cbltypes.cpy は、cblproto.cpy に含まれているため、指定する必要がありません。

呼び出しプロトタイプの詳しい使用例については、「呼び出しプロトタイプ」を参照してください。

なんらかの理由により、cbltypes.cpy で定義されている型を使用せず、独自に集団項目を定義する場合は、各基本項目の型も明示的に宣言する必要があります。なお、この場合には基本項目に任意の名前を付けることができます。

一部のサードパーティ データベース プリプロセッサ (Oracle Pro*COBOL など) では入れ子のプログラムを使用できないため、このようなプリプロセッサも使用している場合は、cblproto.cpy で定義されているプロトタイプを使用できません。代わりに、ライブラリ ルーチンで使用されるデータ項目を明示的に設定する必要があります。

注:

呼び出しプロトタイプは、名前呼び出しルーチン (CBL_name_name 形式のもの) にのみ適用され、番号呼び出しルーチン (X"NN" 形式のもの) には適用されません。

プロトタイプを利用したプログラムの例を次に示します。ファイル mymain.cbl が存在する場合、このプログラムはそのサイズを表示します。

 copy "cblproto.cpy".
 
 program-id. MYMAIN.
 working-storage section.
 01  .
     05  file-details    cblt-fileexist-buf.
 procedure division.
     call 'CBL_CHECK_FILE_EXIST' using 'mymain.cbl '
                                       file-details
     if  return-code not = 0
       display 'File mymain.cbl does not exist (or error)'
     else
       display 'File mymain.cbl size is '
               cblte-fe-filesize of file-details
     end-if
 end program MYMAIN.