COBOL プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択
ここでは、デバッグ・シナリオを実現するために指定する必要のある TEST コンパイラー・オプションおよびサブオプションの組み合わせについて説明します。 ここでは、COBOL プログラムを Enterprise COBOL for z/OS® バージョン 3.4 以降 でコンパイルすることを想定していますが、それより古いバージョンの COBOL コンパイラーに使用する代替策についても情報を提供します。
COBOL コンパイラーには、以下のアクションを制御するために、TEST
コンパイラー・オプションとそのサブオプションが用意されています。
- フックおよびシンボル・テーブルの生成および配置。
- デバッグ情報のオブジェクト・ファイルまたは別のデバッグ・ファイルへの配置。
以下の説明は、プログラムのデバッグに必要な機能を提供する TEST
コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。
- 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
- シナリオ A: Enterprise COBOL for z/OS、バージョン 4 をコンパイルする場合、
TEST (NOHOOK,SEPARATE)
を使用することにより、ほとんどの z/OS Debugger 機能と小さなプログラム・サイズを取得できます。 保護ストレージにロードされたプログラムをデバッグする必要がある場合は、サイトに「許可されたデバッグ」機能が インストールされていることを確認してください。OPT(STD)
またはOPT(FULL)
のコンパイラー・オプションを指定してユーザー・プログラムをコンパイルする場合は、TEST
コンパイラー・オプションのEJPD
サブオプションも指定して、以下の作業を可能にする必要があります。GOTO
またはJUMPTO
コマンドを使用する。- 結果を予測可能な形で変数を変更する。
EJPD
サブオプションを使用した場合は、一部の最適化が実現されない可能性があります。他のApplication Delivery Foundation for z/OSツールを使用している場合は、IBM® Application Delivery Foundation for z/OS Common Components カスタマイズ・ガイドおよびユーザー・ガイドにある情報を確認して、すべてのApplication Delivery Foundation for z/OSツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ B: 以下のいずれかのコンパイラーを使用してコンパイルする場合は、
TEST (NONE,SYM,SEPARATE)
を使用することにより、ほとんどの z/OS Debugger 機能と小さなプログラム・サイズを取得できます。- Enterprise COBOL for z/OS and OS/390® バージョン 3 リリース 2 以降
- Enterprise COBOL for z/OS and OS/390、バージョン 3 リリース 1 APAR PQ63235 適用
- COBOL OS/390 & VM、バージョン 2 リリース 2
- COBOL OS/390 & VM バージョン 2 リリース 1、APAR PQ63234 適用
ユーザー・プログラムのコンパイル時に最適化も行って、z/OS Debugger の機能を最大限得られるようにしたい場合は、以下のコンパイラー・オプションの組み合わせのうちのいずれかを指定してコンパイルを行う必要があります。OPT(STD) TEST(NONE,SYM)
OPT(STD) TEST(NONE,SYM,SEPARATE)
OPT(FULL) TEST(NONE,SYM)
OPT(FULL) TEST(NONE,SYM,SEPARATE)
他のApplication Delivery Foundation for z/OSツールを使用している場合は、IBM Application Delivery Foundation for z/OS Common Components カスタマイズ・ガイドおよびユーザー・ガイドにある情報を確認して、すべてのApplication Delivery Foundation for z/OSツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ C: すべての z/OS Debugger 機能を取得できればプログラム・サイズが大きくなってもかまわず、また、デバッグ情報を分離デバッグ・ファイルに入れる必要がない場合は、以下のコンパイラー・オプションを指定のコンパイラーに使用してコンパイルします。
TEST(HOOK,NOSEPARATE)
と Enterprise COBOL for z/OS バージョン 4。TEST(ALL,SYM,NOSEPARATE)
(以下のいずれかのコンパイラーの場合)- Enterprise COBOL for z/OS and OS/390 バージョン 3 リリース 2 以降
- Enterprise COBOL for z/OS and OS/390、バージョン 3 リリース 1 APAR PQ63235 適用
- COBOL OS/390 & VM、バージョン 2 リリース 2
- COBOL OS/390 & VM、バージョン 2 リリース 1、APAR PQ40298 適用
他のApplication Delivery Foundation for z/OSツールを使用している場合は、IBM Application Delivery Foundation for z/OS Common Components カスタマイズ・ガイドおよびユーザー・ガイドにある情報を確認して、すべてのApplication Delivery Foundation for z/OSツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。
- シナリオ D: COBOL OS/390 & VM バージョン 2 リリース 1 またはそれ以前のバージョンを使用している場合、すべての z/OS Debugger 機能を使用したいときは
TEST(ALL,SYM)
を使用します。他のApplication Delivery Foundation for z/OSツールを使用している場合は、使用しているコンパイラーに対応する、IBM Application Delivery Foundation for z/OS Common Components カスタマイズ・ガイドおよびユーザー・ガイドのトピックを参照して、すべてのApplication Delivery Foundation for z/OSツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。- Enterprise COBOL for z/OS バージョン 3、および COBOL for OS/390 および VM プログラム
- COBOL for MVS™(tm) および VM プログラム
- VS COBOL II プログラム
- OS/VS COBOL プログラム
- シナリオ E:
NOTEST
コンパイラー・オプションを指定してコンパイルし、EQALANGX ファイルを生成することにより、ほとんどの z/OS Debugger 機能を取得できます。 その場合は、プログラムを LangX COBOL モードでデバッグする必要があります。 - シナリオ F:
NOTEST
コンパイラー・オプションを使用してコンパイルすると、z/OS Debugger 機能をいくつか取得できます。 その場合は、プログラムを逆アセンブリー・モードでデバッグする必要があります。他のApplication Delivery Foundation for z/OSツールを使用している場合は、使用しているコンパイラーに対応する、IBM Application Delivery Foundation for z/OS Common Components カスタマイズ・ガイドおよびユーザー・ガイドのトピックを参照して、すべてのApplication Delivery Foundation for z/OSツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。- Enterprise COBOL for z/OS バージョン 4 プログラム
- Enterprise COBOL for z/OS バージョン 3、および COBOL for OS/390 および VM プログラム
- COBOL for MVS(tm) および VM プログラム
- VS COBOL II プログラム
- OS/VS COBOL プログラム
- シナリオ G: Enterprise COBOL for z/OS バージョン 5 またはバージョン 6 リリース 1 を使用してコンパイルする場合は、
TEST (SOURCE)
を使用することにより、ほとんどの z/OS Debugger 機能を活用できます。 保護ストレージにロードされたプログラムをデバッグする必要がある場合は、サイトに「許可されたデバッグ」機能が インストールされていることを確認してください。TEST(SOURCE)
コンパイラー・オプションを使用すると、デバッグ・データはNOLOAD
デバッグ・セグメント内のプログラム・オブジェクトに保存されます。 デバッグ・データによって、ロード済みプログラムのサイズが増加することはありません。 デバッグ・データは実行可能プログラムと常に一致し、常に使用可能です。このため、データ・セットのリストを検索する必要はありません。 プログラム・オブジェクトのサイズは増加しますが、プログラムのデバッグ時にデバッグ・データをロードする必要がない限り、プログラム・オブジェクトのサイズがメモリー内の占有スペースとなることはありません。注:NOLOAD
デバッグ・セグメント内のプログラム・オブジェクトにデバッグ・データが保管されるTEST
コンパイラー・オプションを使用してコンパイルされた、複数の Enterprise COBOL for z/OS バージョン 5 以降のプログラムを含むロード・モジュールをリンク・エディットするときには、バインダー PAGE ステートメントを使用しないでください。 - シナリオ H: Enterprise COBOL for z/OS バージョン 6 リリース 2 以降でコンパイルする場合は、
TEST (SOURCE)
またはTEST (SEPARATE,SOURCE)
を使用することで、z/OS Debuggerのほとんどの機能を取得できます。 Enterprise COBOL for z/OS バージョン 6 リリース 2 (APAR PH04485 インストール済み) 以降の場合、TEST (SEPARATE (DSNAME), SOURCE)
を指定することにより、オブジェクト・プログラム内に 分離デバッグ・ファイル 名 (SYSDEBUG DD
データ・セット名) を保管できます。 保護ストレージにロードされたプログラムをデバッグする必要がある場合は、サイトに「許可されたデバッグ」機能が インストールされていることを確認してください。TEST(SOURCE)
コンパイラー・オプションを使用すると、デバッグ・データはNOLOAD
デバッグ・セグメント内のプログラム・オブジェクトに保存されます。 デバッグ・データによって、ロード済みプログラムのサイズが増加することはありません。 デバッグ・データは実行可能プログラムと常に一致し、常に使用可能です。このため、データ・セットのリストを検索する必要はありません。 プログラム・オブジェクトのサイズは増加しますが、プログラムのデバッグ時にデバッグ・データをロードする必要がない限り、プログラム・オブジェクトのサイズがメモリー内の占有スペースとなることはありません。注:NOLOAD
デバッグ・セグメント内のプログラム・オブジェクトにデバッグ・データが保管されるTEST
コンパイラー・オプションを使用してコンパイルされた、複数の Enterprise COBOL for z/OS バージョン 5 以降のプログラムを含むロード・モジュールをリンク・エディットするときには、バインダー PAGE ステートメントを使用しないでください。TEST(SEPARATE,SOURCE)
コンパイラー・オプションを使用すると、デバッグ・データは別個のデバッグ・ファイルに保管されます。 コンパイラーは、SYSDEBUG DD
ステートメントを使用することにより、分離デバッグ・ファイル を指定します。- Enterprise COBOL for z/OS バージョン 6 リリース 2 (APAR PH04485 インストール済み) 以降の場合、
SEPARATE(DSNAME)
を指定することにより、別個のデバッグ・ファイルの名前をプログラム・オブジェクトの中に保管することができます。 SEPARATE (DSNAME)
を指定しない場合、またはコンパイル後に分離デバッグ・ファイルの場所が変更された場合、以下のいずれかの方法で 分離デバッグ・ファイル の場所を指定してください。z/OS Debugger は、以下の順序で分離デバッグ・ファイルを検索します。- SET SOURCE コマンド (分離デバッグ・ファイル の正確な場所を指定する)
EQAUEDAT
ユーザー出口- SET DEFAULT LISTINGS コマンド
EQADEBUG DD
名EQA_DBG_SYSDEBUG
環境変数
EQAUEDAT
ユーザー出口、SET DEFAULT LISTINGS コマンド、EQADEBUG DD
名、またはEQA_DBG_SYSDEBUG
環境変数を使用する場合、別個のデバッグ・ファイルの場所として、PDS データ・セットまたは z/OS UNIX システム・サービスのディレクトリーを指定してください。SET DEFAULT LISTINGS コマンド、
EQADEBUG DD
名、またはEQA_DBG_SYSDEBUG
環境変数を使用する場合、かつファイル名が CU 名と一致しないために 分離デバッグ・ファイル が見つからない場合、z/OS Debugger は、一致するデバッグ・ファイルを検索するため、同じ方法で指定されたデータ・セットを徹底的に探索します。 徹底的な検索は遅い場合があります。
- Enterprise COBOL for z/OS バージョン 6 リリース 2 (APAR PH04485 インストール済み) 以降の場合、
- シナリオ A: Enterprise COBOL for z/OS、バージョン 4 をコンパイルする場合、
- IMS を使用する COBOL プログラムの場合は、IMS RESLIB ライブラリーから IMS インターフェース・モジュール DFSLI000 を組み込んでください。
- シナリオ A、B、および E の場合、以下のステップを実行します。
- Dynamic Debug機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
- z/OS Debugger の始動後に、
QUERY DYNDEBUG
コマンドを入力して、Dynamic Debug 機能を非アクティブ化していないことを確認する。 - 分離デバッグ・ファイルが非一時ファイルで、デバッグ・セッション中に 使用可能であることを確認する。 リストは保存する必要はありません。
- 次の作業を行う必要があるかどうかを確認する。
TEST
とともにNUMBER
を指定する場合には、ソース・コード内のすべての順序フィールドに数字が入っていることを 確認してください。- 以下のアクションを実行するには、
TEST
コンパイラー・オプションのSYM
サブオプションを指定する必要があります。GOTO
コマンドのターゲットとしてラベル (パラグラフ名またはセクション名) を指定する。- 名前でプログラム変数を参照する。
LIST
またはDESCRIBE
のようなコマンドで、変数または式にアクセスする。PLAYBACK ENABLE
コマンドのDATA
サブオプションを使用する。
SYM
サブオプションを指定する必要があるのは、以下のいずれかのコンパイラーを使用してコンパイルする場合だけです。- Enterprise COBOL for z/OS and OS/390 バージョン 3 のすべてのリリース
- COBOL OS/390 & VM バージョン 2 のすべてのリリース
TEST
コンパイラー・オプションとDEBUG
ランタイム・オプションは、互いに排他的な関係にあり、DEBUG
が優先します。SOURCE-COMPUTER
段落にWITH DEBUGGING MODE
文節を指定して、コード内にUSE FOR DEBUGGING
ステートメントを指定した場合、TEST
は使用不能になります。TEST
コンパイラー・オプションは、オプション・リストには表示されますが、矛盾が生じたためにTEST
が無効であることを知らせる診断メッセージが出されます。-
VS COBOL II プログラムの場合、
TEST
コンパイラー・オプションを使用するには、 以下を指定する必要があります。SOURCE
コンパイラー・オプション。 このオプションは、リスト・ファイルを生成してuserid.pgmname.list
のロケーションに保存するために必要です。RESIDENT
コンパイラー・オプション。 このオプションは、必要な z/OS Debugger ルーチンが実行時に動的にロードされるか確認するために、Language Environment® が必要とするものです。
さらに、ユーザー・プログラムを、VS COBOL II
COB2LIB
ライブラリーではなく、言語環境プログラムSCEELKED
ライブラリーとリンクさせなければなりません。
コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 関連する参照項目
- Enterprise COBOL for z/OS プログラミング・ガイド の
TEST
コンパイラー・オプションの説明。
以下の表は、NOTEST コンパイラー・オプション、TEST コンパイラー・オプション、および TEST コンパイラー・オプションの一部のサブオプションが z/OS Debugger の動作、または「Enterprise COBOL for z/OS プログラミング・ガイド」で説明されていない機能の可用性に及ぼす影響を説明しています。
コンパイラー・オプションまたはサブオプションの名前 | 影響の説明 |
---|---|
NOTEST |
|
NONE および NOHOOK |
|
EJPD |
以下のコンパイラーのいずれかを使用してコンパイルされた最適化プログラムでは、変数を変更することができます。
TEST コンパイラー・オプションの EJPD サブオプションを指定します。 ただし、初期設定するために VALUE 文節を指定して宣言された変数は、変更できません。
|
NOSYM |
Enterprise COBOL for z/OS バージョン 4 でコンパイルする場合、コンパイラーは Enterprise COBOL for z/OS バージョン 5 では、このオプションを使用できません。 |
STMT |
Enterprise COBOL for z/OS、バージョン 4 でコンパイルする場合、コンパイラーは Enterprise COBOL for z/OS バージョン 5 では、このオプションを使用できません。 |
PATH |
Enterprise COBOL for z/OS、バージョン 4でコンパイルする場合、コンパイラーは Enterprise COBOL for z/OS バージョン 5 では、このオプションを使用できません。 |
BLOCK |
Enterprise COBOL for z/OS、バージョン 4 をコンパイルする場合、コンパイラーは Enterprise COBOL for z/OS バージョン 5 では、このオプションを使用できません。 |
ALL |
Enterprise COBOL for z/OS、バージョン 4 をコンパイルする場合、コンパイラーは このオプションを Enterprise COBOL for z/OS バージョン 5 で使用することはできませんが、このコンパイラーで TEST コンパイル・オプションを指定した場合、コンパイル時に挿入されるフックを使用できる限り、ALL を指定した場合に似たオブジェクトが作成されます。 |