プログラムのコンパイルを指示するのに役立つコンパイラー指示ステートメントがいくつかとコンパイラー指示が 1 つあります。
以下は、コンパイラー指示ステートメントおよびディレクティブです。
>>CALLINTERFACE を使用できるのは、PROCEDURE DIVISION の中だけです。
>>CALLINTERFACE ディレクティブの構文と使用法は、CALLINT コンパイラー・オプションと類似しています。例外は次のとおりです。
サブオプションなしで >>CALLINT を指定すると、使用される呼び出し規約が CALLINT コンパイラー・オプションで区切られます。
例えば、PROG1 が ENTRYINT(OPTLINK) オプションを指定して コンパイルされた COBOL プログラムである場合、>>CALLINT OPTLINK ディレクティブを使用して、PROG1 呼び出しについてのみインターフェースを変更します。
>>CALLINT OPTLINK DESC CALL “PROG1” USING PARM1 PARM2. >>CALLINT CALL “PROG2” USING PARM1.
>>CALLINT 指示を指定する場所は、COBOL プロシージャー・ステートメントが指定可能な場所であればどこでも構いません。例えば、次の構文は有効です。
MOVE 3 TO >>CALLINTERFACE SYSTEM RETURN-CODE.
>>CALLINT の影響は、現行のプログラムに限定されます。ネストされたプログラム、または同じバッチ内でコンパイルされたプログラムは、>>CALLINT コンパイラー指示で指定された規則ではなく、CALLINT コンパイラー・オプションを使用して指定された呼び出し規約を継承します。
>>CALLINT SYSTEM DESCRIPTORを使用して呼び出されるルーチンを記述する場合、引数受け渡しの仕組みは次のようになります。

このコンパイラー指示ステートメントは、事前に作成されたテキストを COBOL プログラムに入れます。事前に作成されたテキストを含む text-name (コピーブックの名前) を指定する必要があります。例えば、COPY my-text のようになります。 text-name に修飾子として library-name を付けることができます。例えば、 COPY my-text of inventory-lib のようになります。 text-name が修飾されない場合は、SYSLIB の library-name が想定されます。library-name および text-name に影響を与える事項は次のとおりです。
library-name
library-name をリテラルとして指定した場合、リテラルの内容は実際のパスとして扱われます。ユーザー定義語として library-name を指定した場合は、名前が環境変数として使用され、この環境変数の値がコピーブックの位置を指定するパスに使用されます。複数のパス名を指定するには、各パス名をセミコロン (;) で区切ります。
library-name を指定しない場合、このパスは『text-name』に説明するとおりに使用されます。
text-name
text-name をユーザー定義語として指定した場合、処理は text-name に対応する環境変数が設定されているかどうかによって異なります。環境変数が設定されている場合、環境変数の値はコピーブックのファイル名 (およびパス名) として使用されます。
次の 3 つの条件がすべて満たされる場合は、 text-name が絶対パスとして扱われます。
例えば、以下は絶対パスと見なされます。
COPY “\mycpylib\mytext.cpy” or COPY “d:\mycpylib\mytext.cpy”
text-name に対応する環境変数が設定されていない場合、コピーブックは次の名前で検索されます。
例えば、COPY MyCopy は次の順序で検索を行います。
-I オプション
それ以外の場合 (library-name も text-name もパスを示さない場合)、検索パスは -I オプションに依存します。
COPY A と COPY A OF MYLIB を等しくするには、-I%MYLIB% を指定します。
上記の規則に基づくと、COPY “¥X¥Y” はルート・ディレクトリー内で検索され、COPY “X¥Y” は現行ディレクトリー内で検索されます。
COPY A OF SYSLIB は COPY A と同じです。-I オプションは、library-name 修飾が明示的に指定された COPY ステートメントや、ライブラリー名が SYSLIB のステートメントには影響しません。
library-name と text-name の両方を指定すると、 コンパイラーは、library-name の末尾が ¥ でない場合に、2 つの値の間にパス区切り文字 (¥) を挿入します。例えば、COPY MYCOPY OF MYLIB に 次の設定を使用するとします。
SET MYCOPY=MYPDS(MYMEMBER) SET MYLIB=MYFILE
この場合、結果的に MYFILE¥MYPDS(MYMEMBER) となります。
関連タスク
ソース・リストのヘッダーの変更
コマンド行からのコンパイル
PROCESS (CBL) ステートメントによるコンパイラー・オプションの指定
関連参照
cob2 オプション
呼び出しインターフェース規約
CALLINTERFACE ディレクティブ
(「COBOL for Windows 言語解説書」)
CBL (PROCESS) ステートメント
(「COBOL for Windows 言語解説書」)
*CONTROL (*CBL) ステートメント
(「COBOL for Windows 言語解説書」)
COPY ステートメント
(「COBOL for Windows 言語解説書」)