Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


コンパイラー指示ステートメント

プログラムのコンパイルを指示するのに役立つコンパイラー指示ステートメントがいくつかとコンパイラー指示が 1 つあります。

以下は、コンパイラー指示ステートメントおよびディレクティブです。

*CONTROL (*CBL) ステートメント
このコンパイラー指示ステートメントは、出力の作成を抑制するかまたは可能にするかを選択します。キーワードの *CONTROL*CBL は同義語です。
>>CALLINTERFACE 指示
このコンパイラー指示は、引数記述子を生成するかどうかなど、呼び出しのインターフェース規約を指定します。>>CALLINTERFACE を使用して指定された規約は、別の >>CALLINTERFACE 指定が行われるまで有効です。>>CALLINT は、>>CALLINTERFACE の略語です。

>>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を使用して呼び出されるルーチンを記述する場合、引数受け渡しの仕組みは次のようになります。

この図は、CALLINT SYSTEM DESC による引数受け渡しの仕組みを示しています。
詳細へのリンク。
pointer to descr-n
特定の引数に対する記述子を指します。引数に対する記述子が存在しない場合は 0 になります。
descriptor-ID
このバージョンの記述子を識別するには、COBDESC0 に設定します。これにより、記述子の入力形式が将来変更される場合にも対応できるようになります。
descType
PICTURE X(n) を使用した USAGE DISPLAY、あるいは PICTURE G(n) または N(n) を使用した USAGE DISPLAY-1 の基本データ項目の場合は、X'02' (descElmt) に設定します。それ以外 (数値フィールド、構造体、テーブル) の場合はすべて、X'00' に設定します。
dataType
次のように設定します。
  • descType = X'00' の場合: dataType = X'00'
  • descType = X'02' で、USAGEDISPLAY の場合: dataType = X'02' (typeChar)
  • descType = X'02' で、USAGEDISPLAY-1 の場合: dataType = X'09' (typeGChar)
descInf1
常に X'00' に設定します。
descInf2
次のように設定します。
  • descType = X'00' の場合: descInf2 = X'00'
  • descType = X'02'の場合:
    • CHAR(EBCDIC) オプションが有効で、USAGE 文節内の NATIVE オプションで引数が定義されていない場合: descInf2 = X'40'
    • それ以外の場合: descInf2 = X'00'
length-1
引数記述子には、固定長引数の引数長か、可変長項目の現行の長さが入ります。
length-2
引数が可変長項目の場合は、その引数の最大長を示します。固定長引数の場合、length-2 と length-1 は等しくなります。
 
COPY ステートメント
COPY ステートメントの構文
構文図を読む構文図をスキップする>>-COPY-+-text-name-+-+--------------------------+-------------->
        '-literal-1-' '-+-OF-+--+-library-name-+-'  
                        '-IN-'  '-literal-2----'    
 
>--+----------+--+-----------------------------------------+---><
   '-SUPPRESS-'  |            .--------------------------. |  
                 |            V                          | |  
                 '-REPLACING----operand-1--BY--operand-2-+-'  
 

このコンパイラー指示ステートメントは、事前に作成されたテキストを COBOL プログラムに入れます。事前に作成されたテキストを含む text-name (コピーブックの名前) を指定する必要があります。例えば、COPY my-text のようになります。 text-name に修飾子として library-name を付けることができます。例えば、 COPY my-text of inventory-lib のようになります。 text-name が修飾されない場合は、SYSLIBlibrary-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 に対応する環境変数が設定されていない場合、コピーブックは次の名前で検索されます。

  1. 拡張子 .cpy の付いた text-name
  2. 拡張子 .cbl の付いた text-name
  3. 拡張子 .cob の付いた text-name
  4. 拡張子のない text-name

例えば、COPY MyCopy は次の順序で検索を行います。

  1. MYCOPY.cpy (前述のとおり、指定されたすべてのパス内)
  2. MYCOPY.cbl (前述のとおり、指定されたすべてのパス内)
  3. MYCOPY.cob (前述のとおり、指定されたすべてのパス内)
  4. MYCOPY (前述のとおり、指定されたすべてのパス内)

-I オプション

それ以外の場合 (library-nametext-name もパスを示さない場合)、検索パスは -I オプションに依存します。

COPY ACOPY A OF MYLIB を等しくするには、-I%MYLIB% を指定します。

上記の規則に基づくと、COPY “¥X¥Y” はルート・ディレクトリー内で検索され、COPY “X¥Y” は現行ディレクトリー内で検索されます。

COPY A OF SYSLIBCOPY A と同じです。-I オプションは、library-name 修飾が明示的に指定された COPY ステートメントや、ライブラリー名が SYSLIB のステートメントには影響しません。

library-nametext-name の両方を指定すると、 コンパイラーは、library-name の末尾が ¥ でない場合に、2 つの値の間にパス区切り文字 (¥) を挿入します。例えば、COPY MYCOPY OF MYLIB に 次の設定を使用するとします。

SET MYCOPY=MYPDS(MYMEMBER)
SET MYLIB=MYFILE

この場合、結果的に MYFILE¥MYPDS(MYMEMBER) となります。

PROCESS (CBL) ステートメント
このコンパイラー指示ステートメントは、最も外側の IDENTIFICATION DIVISION ヘッダーの前に置かれるもので、プログラムのコンパイル時に使用されるコンパイラー・オプションを指定します。

関連タスク
ソース・リストのヘッダーの変更
コマンド行からのコンパイル
PROCESS (CBL) ステートメントによるコンパイラー・オプションの指定

関連参照
cob2 オプション
呼び出しインターフェース規約
CALLINTERFACE ディレクティブ (「COBOL for Windows 言語解説書」)
CBL (PROCESS) ステートメント (「COBOL for Windows 言語解説書」)
*CONTROL (*CBL) ステートメント (「COBOL for Windows 言語解説書」)
COPY ステートメント (「COBOL for Windows 言語解説書」)


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)