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

本製品には、2 つのコピーファイルがあります。1 つには、型定義 (TYPEDEF) として指定され、ライブラリルーチンによって使用されるデータ項目が含まれており、もう 1 つには、ライブラリルーチン用の呼び出しプロトタイプが含まれています。 COBOL プログラムにこれらのコピーファイルを使用すると、コンパイラがこれらのルーチンへの呼び出しをすべて検証するようになります。

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

また、システムライブラリルーチンのすべてのプロトタイプが含まれているファイル cblproto.cpy も提供されています。 場合によっては、これらのプロトタイプには ANY と宣言されたパラメータが使用されています。これは通常、入力に可変長データが必要な場合です。

ライブラリルーチン用のパラメータの記述では、システム定義の USAGE 型への参照には接頭語 CBLT- が使用され、従属項目には接頭語 CBLTE- が使用されています。 これらの新しい USAGE 型を使用して変数を宣言する場合、従属項目は宣言しません。ただし、その変数の使用が許されている任意の場所で従属項目を使用することができます。 従属項目を含む同じ型の変数を複数定義する場合、各集団変数の従属項目が同じ名前になるため、修飾語を使用して、参照する変数をコンパイラが判断できるようにする必要があります。 何らかの理由により、cbltypes.cpy に定義されている新しい USAGE 型を使用しない場合は、集団項目とすべてのリストされる従属変数を明示的に宣言する必要があります。この場合、従属変数には任意の名前を使用できます。

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

呼び出しプロトタイプの詳しい使用例については、『言語リファレンス - 追加のトピック』の『』の章の『呼び出しプロトタイプ』を参照してください。CALL 文、ANY 句および TYPEDEF 句の構文については、『言語リファレンス』を参照してください。

注:これらの呼び出しプロトタイプは、名前呼び出しルーチン (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 'ファイル mymain.cbl は存在しません(エラーが発生しました)'
else
       display 'ファイル mymain.cbl のサイズは '
               cblt-fe-filesize of file-details
end-if
end program MYMAIN.