デバッグ・セッションの計画

デバッグを始める前に、計画を立てておくと、以下の選択を行うときに役立ちます。

計画を作成する際には、以下の作業を実行します。

  1. 表 5 を使用して、ユーザーのプログラムに使用するコンパイラー・オプションおよびサブオプションを記録します。この表には、一連の一般コンパイラーに対して、最小プログラム・サイズでほとんどのデバッグ機能を提供できるコンパイラー・オプションが記載されています。以下の情報については、デバッグするためのコンパイラー・オプションの選択を参照してください。
  2. 表 3 を使用して、使用するデバッグ・モードを記録します。デバッグ・モードを機能させるための前提条件およびユーザーが行う必要のある作業については、デバッグ・モードの選択を参照してください。
  3. 表 11 を使用して、TEST ランタイム・オプションを指定するために使用する方法を記録します。ご使用のプログラムに最適な方法を判断するには、Debug Tool を開始する方法の選択を参照してください。
  4. デバッグする COBOL プログラムが旧バージョン (「COBOL and CICS Command Level Conversion Aid for OS/390、MVS、VM: User's Guide」にリストされている) である場合、以下のどちらかを選択する必要があります。 詳しくは、旧バージョンの COBOL プログラムのデバッグ方法の選択を参照してください。

これらの作業の完了後に、集めた情報を使用して、Debug Tool でプログラムをデバッグするためのプロセスの更新の指示に従ってください。

デバッグするためのコンパイラー・オプションの選択

コンパイラー・オプションは、ロード・モジュールのサイズおよび使用可能な Debug Tool 機能の範囲に影響を与えます。 Debug Tool は、フックやシンボル・テーブルなどの情報を使用して、プログラムの制御を得て、プログラムをステートメントごとまたは行ごとに実行して、 プログラムに関する情報を表示します。

フックおよびシンボル・テーブルによって Debug Tool がプログラムをデバッグする仕組みの詳細については、以下のトピックをお読みください。

コンパイラー・オプションがどのように Debug Tool 機能に影響を与えるのかに関する詳細については、以下のトピックをお読みください。

表 5. この表に使用する必要があるコンパイラー・オプションを記録します。 Debug Tool for z/OS バージョン 11.1 以降で使用するオプション。
コンパイラーまたはアセンブラー 使用するコンパイラー・オプション
OS/VS COBOL バージョン 1 リリース 2.4 NOTEST、 SOURCE、 DMAP、 PMAP、 VERB、 XREF、 NOLST、 NOBATCH、 NOSYMDMP、 NOCOUNT または
______________________________________________________________
VS COBOL II バージョン 1 リリース 3 およびバージョン 1 リリース 4 (TEST コンパイラー・オプションでコンパイルされ、言語環境プログラム・ライブラリーでリンクされたプログラムの場合) TEST または
______________________________________________________________
VS COBOL II バージョン 1 リリース 3 およびバージョン 1 リリース 4 (NOTEST コンパイラー・オプションを指定してコンパイルし、非言語環境プログラムのライブラリーとリンクしたプログラムの場合。) NOTEST、 NOOPTIMIZE、 SOURCE、 MAP、 XREF、 LIST (または OFFSET) または
______________________________________________________________
AD/Cycle® COBOL/370 バージョン 1 リリース 1 TEST(ALL、SYM) または
______________________________________________________________
COBOL for MVS™ & VM TEST(ALL、SYM) または
______________________________________________________________
COBOL for OS/390® & VM TEST(NONE,SYM,SEPARATE) または
______________________________________________________________
Enterprise COBOL for z/OS and OS/390、バージョン 3 TEST(NONE,SYM,SEPARATE) または
______________________________________________________________
Enterprise COBOL for z/OS® バージョン 4.1 以降 TEST(NOHOOK,SEPARATE,EJPD) または
______________________________________________________________
OS PL/I バージョン 2 リリース 1、バージョン 2 リリース 2、およびバージョン 2 リリース 3 TEST(ALL、SYM) または
______________________________________________________________
PL/I for MVS & VM TEST(ALL、SYM) または
______________________________________________________________
Enterprise PL/I バージョン 3.1 からバージョン 3.3 TEST(ALL、SYM) または
______________________________________________________________
Enterprise PL/I バージョン 3.4 TEST(ALL,NOHOOK,SYM) または
______________________________________________________________
Enterprise PL/I バージョン 3.5 以降 TEST(ALL,NOHOOK,SYM,SEPARATE) または
______________________________________________________________
Enterprise PL/I バージョン 3.7 TEST(ALL,NOHOOK,SYM,SEPARATE,SOURCE) または
______________________________________________________________
Enterprise PL/I バージョン 3.8 以降 TEST(ALL,NOHOOK,SYM,SEPARATE) および LISTVIEW または
______________________________________________________________
Enterprise PL/I バージョン 4.1 以降 TEST(ALL,NOHOOK,SYM,SEPARATE) および LISTVIEW および GONUMBER(SEPARATE) または
______________________________________________________________
  • AD/Cycle C/370™ バージョン 1 リリース 1
  • C/C++ for MVS/ESA バージョン 3 リリース 1 以降
  • OS/390 バージョン 2 リリース 6 以降の C++ フィーチャー
  • z/OS バージョン 1.5 以前の C++ フィーチャー
TEST または
______________________________________________________________
  • OS/390 バージョン 2 リリース 6 以降の C フィーチャー
  • z/OS バージョン 1.5 以前の C フィーチャー
TEST(HOOK) または
______________________________________________________________
z/OS バージョン 1.6 以降の C/C++ フィーチャー DEBUG(FORMAT(DWARF)) または
______________________________________________________________
IBM® High Level Assembler (HLASM)、 バージョン 1 リリース 4、バージョン 1 リリース 5、バージョン 1 リリース 6 ADATA

COBOL プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択

ここでは、目的のデバッグ・シナリオを実現するために指定する必要がある、TEST コンパイラー・オプションおよびサブオプションの組み合わせについて説明します。ここでは、COBOL プログラムを Enterprise COBOL for z/OS バージョン 3.4 以降でコンパイルすることを想定していますが、それより古いバージョンの COBOL コンパイラーに使用する代替策についても情報を提供します。

COBOL コンパイラーには、以下のアクションを制御するために、TEST コンパイラー・オプションとそのサブオプションが用意されています。

以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. IMS™ を使用する COBOL プログラムの場合は、IMS RESLIB ライブラリーから IMS インターフェース・モジュール DFSLI000 を組み込んでください。
  3. シナリオ A、B、および E の場合、以下のステップを実行します。
    1. 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
    2. ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
    3. Debug Tool の始動後に、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
    4. 分離デバッグ・ファイル が非一時ファイルで、デバッグ・セッション中に使用可能であることを確認する。リストは保存する必要はありません。
  4. 次の作業を行う必要があるかどうかを確認する。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

以下の表は、NOTEST コンパイラー・オプション、TEST コンパイラー・オプション、および TEST コンパイラー・オプションの一部のサブオプションが Debug Tool の動作、または「Enterprise COBOL for z/OS プログラミング・ガイド」で説明されていない機能の可用性に及ぼす影響を説明しています。

表 6. COBOL NOTEST コンパイラー・オプションおよび TEST コンパイラー・サブオプションの一部が Debug Tool に及ぼす影響の説明
コンパイラー・オプションまたはサブオプションの名前 影響の説明
NOTEST
  • プログラム・ステートメントをステップスルーすることはできません。
  • プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
  • プログラムに CEETEST への呼び出しを組み込んで、プログラムの実行を停止し、Debug Tool コマンドを発行することができます。
  • プログラム変数を検証または使用することはできません。
  • ストレージおよびレジスターをリストできます。
  • コンパイラーによって作成されたソース・リストは使用できません。したがって、デバッグ・セッション中はリストを使用できません。SET DEFAULT LISTINGS コマンドを使用しても、リストは使用できません。
  • ステートメント・テーブルが使用できないため、ステートメントのブレークポイントの設定や、GOTO または QUERY LOCATION などのコマンドの使用はできません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。
NONE および NOHOOK
  • 以下のいずれかのコンパイラーでコンパイルする場合は、最適化されていないプログラムをデバッグするときに、GOTO コマンドまたは JUMPTO コマンドを使用できます。
    • Enterprise COBOL for z/OS バージョン 4.1
    • Enterprise COBOL for z/OS and OS/390 バージョン 3 のすべてのリリース
    • COBOL for OS/390 & VM バージョン 2 のすべてのリリース
    Enterprise COBOL for z/OS バージョン 4.1 でプログラムをコンパイルし、TEST コンパイラー・オプションの EJPD サブオプションを指定する場合、最適化されたプログラムをデバッグするときに、GOTO コマンドまたは JUMPTO コマンドを使用できます。EJPD サブオプションを指定した場合、一部の最適化が失われる可能性があります。
  • 任意の場所で CEETEST への呼び出しを使用して、Debug Tool を始動できます。
EJPD

以下のいずれかのコンパイラーによってコンパイルされた最適化プログラムで、変数を変更することができます。

  • Enterprise COBOL for z/OS バージョン 4.1
  • Enterprise COBOL for z/OS and OS/390 バージョン 3 リリース 2 以降
  • Enterprise COBOL for z/OS and OS/390 バージョン 3 リリース 1 (APAR PQ63235 インストール済み)
  • COBOL for OS/390 & VM、バージョン 2 リリース 2
  • COBOL for OS/390 & VM バージョン 2 リリース 1 (APAR PQ63234 インストール済み)

ただし、結果は予測不能である場合があります。より予測可能な結果を得るには、プログラムを Enterprise COBOL for z/OS バージョン 4.1 でコンパイルし、TEST コンパイラー・オプションの EJPD サブオプションを指定します。ただし、初期設定するために VALUE 文節を指定して宣言された変数は、変更できません。

NOSYM
  • プログラム変数を名前で参照できません。
  • LISTDESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
  • CALL 変数などのコマンドを使用して別のプログラムに分岐したり、GOTO コマンドを使用して別のラベル (パラグラフまたはセクション名) に分岐したりすることはできません。

Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは SYM または NOSYM を無視し、常にシンボル・テーブルを作成します。

STMT
  • COBOL コンパイラーは、DATEPROC コンパイラー・オプションが指定された場合にのみ、日付処理ステートメント用にコンパイル時に挿入するフックを生成します。日付処理ステートメントは、日付フィールドを参照するステートメント、すなわち、日付フィールドを参照する EVALUATE または SEARCH ステートメントの WHEN 句です。
  • すべてのステートメントにブレークポイントを設定し、プログラムをステップスルーできます。
  • パス点がステートメントの境界でもある場合を除き、Debug Tool がパス点で制御を得ることはできません。
  • Debug Tool コマンド GOTO を使用して、すべてのステートメントおよびラベルに分岐することができます。

Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは STMT サブオプションを、HOOK サブオプション (すべてのリリースの Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 での ALL サブオプションと同等) と同じように処理します。

PATH
  • Debug Tool は、パス点と、ブロックの入り口点、および出口点でのみ制御を得ることができます。プログラムをステップスルーしようとすると、Debug Tool はパス点と一致するステートメントでのみ制御を得るため、一部のステートメントは実行されないように見えます。
  • 任意の場所で CEETEST への呼び出しを使用して、Debug Tool を始動できます。
  • Debug Tool コマンド GOTO は、パス点と一致するすべてのステートメントおよびラベルに対して有効です。

Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは PATH サブオプションを HOOK サブオプション (このサブオプションは、Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 のすべてのリリースにおける ALL サブオプションに相当します) であるかのように取り扱います。

BLOCK
  • Debug Tool は、ユーザー・プログラム、メソッド、およびネストされたプログラムの入り口と出口で制御を得ます。
  • CEETEST への呼び出しを使用して、Debug Tool を任意の場所で明示的に始動できます。
  • STEP などのコマンドを発行すると、次の入り口点または出口点に達するまでプログラムが実行されます。
  • GOTO コマンドを使用すると、ブロックの入り口点または出口点と一致するステートメントへの分岐ができます。

Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは BLOCK サブオプションを HOOK サブオプション (このサブオプションは、Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 のすべてのリリースにおける ALL サブオプションに相当します) であるかのように取り扱います。

ALL
  • すべてのステートメントおよびパス点にブレークポイントを設定し、プログラムをステップスルーできます。
  • Debug Tool は、すべてのステートメント、パス点、日付処理ステートメント、ラベル、ブロックの入り口点および出口点でプログラムの制御を得ることができ、ユーザーは Debug Tool コマンドの入力が可能になります。
  • Debug Tool コマンド GOTO を使用して、ステートメントおよびラベルに分岐することができます。

Enterprise COBOL for z/OS バージョン 4.1 でコンパイルする場合、コンパイラーは ALL サブオプションを HOOK サブオプション (このサブオプションは、Enterprise COBOL for z/OS and OS/390 バージョン 3、または COBOL for OS/390 & VM バージョン 2 のすべてのリリースにおける ALL サブオプションに相当します) であるかのように取り扱います。

PL/I プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択

ここでは、目的のデバッグ・シナリオを実現するために指定する必要がある、TEST コンパイラー・オプションおよびサブオプションの組み合わせについて説明します。ここでは、PL/I プログラムを Enterprise PL/I for z/OS バージョン 3.5 以降でコンパイルすることを想定していますが、それより古いバージョンの PL/I コンパイラーに使用する代替策についても情報を提供します。

PL/I コンパイラーには、以下のアクションを制御するために、TEST コンパイラー・オプションとそのサブオプションが用意されています。

Debug Tool は、最適化された PL/I プログラムのデバッグをサポートしません。 NOOPTIMIZE 以外のコンパイラー・オプションは使用しないでください。

以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。
  2. シナリオ A、B、C、E、および F の場合は、以下のステップを実行します。
    1. 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
    2. ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
    3. Debug Tool の始動後に、QUERY DYNDEBUG コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
    4. 分離デバッグ・ファイル が非一時ファイルで、デバッグ・セッション中に使用可能であることを確認する。
  3. 次の作業を行う必要があるかどうかを確認する。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

表 7. PL/I NOTEST コンパイラー・オプションおよび TEST コンパイラー・サブオプションが Debug Tool に及ぼす影響の説明
コンパイラー・オプションまたはサブオプションの名前 影響の説明
NOTEST

NOTEST コンパイラー・オプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。

  • ストレージおよびレジスターをリストできます。
  • プログラムに PLITEST または CEETEST への呼び出しを組み込むことにより、プログラムの実行を一時的に中断し、Debug Tool コマンドを発行できます。
  • プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
  • プログラム変数を検証または使用することはできません。
  • ステートメント・レベルのフックは挿入されないため、ステートメントのブレークポイントの設定や、GOTOQUERY LOCATION などのコマンドの使用はできません。
  • コンパイラーによって作成されたソース・リストは使用できません。したがって、デバッグ・セッション中はリストを使用できません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。
NOHOOK

TEST コンパイラー・オプションの NOHOOK サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。

  • Debug Tool でオーバーレイ・フックを生成するためには、サブオプション ALL、PATH、STMT、または BLOCK のいずれか 1 つが有効であることが必要ですが、HOOK を指定する必要はなく、NOHOOK を指定することをお勧めします。
  • NOHOOK を指定した場合、Debug Tool が停止する PATH ブレークポイントは、ENTRY および EXIT ブレークポイントのみです。
NONE

TEST コンパイラー・オプションの NONE サブオプションを使用して PL/I プログラムをコンパイルする場合、プログラム内に PLITEST または CEETEST の呼び出しを書き込むことにより、プログラム内の任意の点で Debug Tool を始動できます。

SYM

TEST コンパイラー・オプションの SYM サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。

  • すべてのプログラム変数を名前で参照できます。これにより、プログラム変数の検証や式での使用、PLAYBACK ENABLE コマンドの DATA パラメーターの使用が可能になります。
  • SET AUTOMONITOR ON コマンドのサポートが使用可能になります。
  • GOTO の宛先としてのラベルのサポートが使用可能になります。
NOSYM

TEST コンパイラー・オプションの NOSYM サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。

  • プログラム変数を名前で参照できません。
  • LIST や DESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
  • CALL 変数などのコマンドを使用して別のプログラムに分岐したり、GOTO コマンドを使用して別のラベル (プロシージャーまたはブロック名) に分岐したりすることはできません。
BLOCK

TEST コンパイラー・オプションの BLOCK サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。

  • Debug Tool は、ブロックの境界、すなわち、ブロックの入り口および出口で制御を得ます。
  • 動的デバッグがアクティブでなく、HOOK コンパイラー・オプションを使用する場合、ユーザーが制御を得られるのは、プログラムの入り口点および出口点と、内部プログラム・ブロックのすべての入り口点および出口点のみです。例えば、STEP コマンドを入力すると、次のブロックの入り口点または出口点に達するまでプログラムが実行されます。
  • 動的デバッグがアクティブな場合、すべてのステートメントにブレークポイントを設定し、プログラムをステップスルーできます。
  • PATH も指定した場合を除き、パス点で制御を得ることはできません。
  • PLITEST または CEETEST への呼び出しを使用すると、Debug Tool をプログラムの任意の場所で始動できます。
  • フックは、空の ON ユニットまたは単一の GOTO ステートメントで構成される ON ユニットには挿入されません。
STMT

TEST コンパイラー・オプションの STMT サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。

  • すべてのステートメントにブレークポイントを設定し、プログラムをステップスルーできます。
  • パス点がステートメントの境界でもある場合を除き、Debug Tool がパス点で制御を得ることはできません。ただし、PATH も指定した場合は除きます。
  • Debug Tool コマンド GOTO を使用して、すべてのステートメントおよびラベルに分岐することができます。
ALL

TEST コンパイラー・オプションの ALL サブオプションを使用してコンパイルした PL/I プログラムをデバッグするときは、一部の動作またはフィーチャーが変更されます。次のリストはそうした変更を説明したものです。

  • すべてのステートメントおよびパス点にブレークポイントを設定し、プログラムをステップスルーできます。
  • Debug Tool は、すべてのステートメント、パス点、ラベル、ブロックの入り口点および出口点でプログラムの制御を得ることができ、ユーザーは Debug Tool コマンドの入力が可能になります。
  • Debug Tool コマンド GOTO を使用すると、ステートメントおよびラベルへの分岐ができます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

C プログラムでの TEST または DEBUG コンパイラー・サブオプションの選択

このトピックでは、必要なデバッグ・シナリオを得るために指定する必要がある TEST または DEBUG コンパイラー・オプションとサブオプションの組み合わせを説明します。ここでは、C プログラムを z/OS C/C++ バージョン 1.6 以降でコンパイルすることを想定していますが、それより古いバージョンの C コンパイラーに使用する代替策についても情報を提供します。

TEST と DEBUG コンパイラー・オプションのどちらを選択する

z/OS C/C++ バージョン 1.5 以前を使用してコンパイルしている場合は、TEST コンパイラー・オプションを選択する必要があります。

C/C++ コンパイラー・オプション DEBUG が z/OS C/C++ バージョン 1.5 で導入されました。Debug Tool は、z/OS C/C++ バージョン 1.6 以降で、DEBUG コンパイラー・オプションをサポートします。 DEBUG コンパイラー・オプションは、コンパイラーの前のバージョンで使用できた TEST コンパイラー・オプションに換わるものです。

z/OS C/C++ バージョン 1.6 以降を使用してコンパイルしている場合は、DEBUG コンパイラー・オプションを選択し、以下の利点を活用してください。

C プログラム用 DEBUG コンパイラー・サブオプションの選択

ここでは、使用可能なデバッグ・シナリオと、正しい DEBUG コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。

C コンパイラーには、以下のアクションを制御するために、DEBUG コンパイラー・オプションとそのサブオプションが用意されています。

Debug Tool は、最適化された C プログラムのデバッグをサポートしません。 NOOPTIMIZE または OPTIMIZE(0) 以外の OPTIMIZE コンパイラー・オプションを使用しないでください。

以下の説明は、プログラムのデバッグに必要な機能を提供する DEBUG コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。

    どのシナリオの場合も、他の問題判別ツールを使用している場合は、z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。

  2. ユーザーが選択したシナリオの場合、以下のリソースがあることを確認してください。
  3. 次の作業を行う必要があるかどうかを確認する。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

C プログラムでの TEST または NOTEST コンパイラー・サブオプションの選択

ここでは、使用可能なデバッグ・シナリオと、正しい TEST コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。

C コンパイラーは、TEST コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。

Debug Tool は、最適化された C プログラムのデバッグをサポートしません。 NOOPTIMIZE 以外のコンパイラー・オプションは使用しないでください。

以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。

    どのシナリオの場合も、他の問題判別ツールを使用している場合は、 z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。

  2. シナリオ B の場合、次の手順を行います。
    1. z/OS バージョン 1.6 またはバージョン 1.7 で実行している場合は、言語環境プログラムの APAR PK12833 用の PTF がインストールされていることを確認します。
    2. 動的デバッグ機能を使用して、読み取り専用ストレージ内にあるプログラムにフックを配置する場合は、「許可されたデバッグ」機能がインストールされており、それを使用する許可を受けていることをシステム管理者に確認します。
    3. ご使用のシステム上に、動的デバッグ機能がインストールされていることを確認する。
    4. Debug Tool の始動後に、SET DYNDEBUG OFF コマンドを入力して、動的デバッグ機能を非アクティブ化していないことを確認する。
  3. 次の作業を行う必要があるかどうかを確認する。
表 8. C の NOTEST コンパイラー・オプションおよび TEST コンパイラー・サブオプションが Debug Tool に及ぼす影響の説明
コンパイラー・オプションまたはサブオプションの名前 影響の説明
NOTEST

以下のリストは、NOTEST コンパイラー・オプションが Debug Tool の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。

  • プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
  • プログラム変数を検証または使用することはできません。
  • ストレージおよびレジスターをリストできます。
  • Debug Tool の GOTO コマンドは使用できません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。
TEST

以下のリストは、TEST コンパイラー・オプションの一部のサブオプションが Debug Tool の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。

  • 1 つのソース・ファイルの最大行数が 131,072 を越えてはいけない。
  • 実行可能ステートメントを保管する組み込みファイルの最大数が 1024 を越えてはいけない。
NOSYM

以下のリストは、TEST コンパイラー・オプションの NOSYM サブオプションが、Debug Tool の動作、または「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていないフィーチャーの可用性に及ぼす影響を説明したものです。

  • プログラム変数を名前で参照できません。
  • LISTDESCRIBE などのコマンドを使用して変数や式にアクセスすることはできません。
  • CALLGOTO などのコマンドを使用して別のラベル (パラグラフまたはセクション名) に分岐することはできません。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

#pragma ステートメントによる C プログラムのコンパイル

TEST/NOTEST コンパイラー・オプションは、プログラムをコンパイルするときに、または直接プログラム内で、#pragma を使用して指定することができます。

この #pragma は、プログラム内でどの実行可能コード よりも前になければなりません。

次の例では、シンボル・テーブル情報、ネストされたブロックのシンボル情報、および行番号でのフックが生成されます。

#pragma options (test(SYM,BLOCK,LINE))

これは TEST(SYM,BLOCK,LINE,PATH) と同等です。

また、#pragma を使用してランタイム・オプションを指定することもできます。

関数およびネストされたブロックでのフックの配置規則

関数およびネストされたブロックに出入りする際のフックの配置には、次の規則が適用されます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

ステートメントおよびパス点でのフックの配置規則

ステートメントおよびパス点用のフックの配置には、次の規則が適用されます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

C++ プログラム用 TEST または DEBUG コンパイラー・サブオプションの選択

このトピックでは、必要なデバッグ・シナリオを得るために指定する必要がある TEST または DEBUG コンパイラー・オプションとサブオプションの組み合わせを説明します。ここでは、C++ プログラムを z/OS C/C++ バージョン 1.6 以降でコンパイルすることを想定していますが、それより古いバージョンの C++ コンパイラーに使用する代替策についても情報を提供します。

TEST と DEBUG コンパイラー・オプションのどちらを選択する

z/OS C/C++ バージョン 1.5 以前を使用してコンパイルしている場合は、TEST コンパイラー・オプションを選択する必要があります。

C/C++ コンパイラー・オプション DEBUG が z/OS C/C++ バージョン 1.5 で導入されました。Debug Tool は、z/OS C/C++ バージョン 1.6 以降で、DEBUG コンパイラー・オプションをサポートします。 DEBUG コンパイラー・オプションは、コンパイラーの前のバージョンで使用できた TEST コンパイラー・オプションに換わるものです。

z/OS C/C++ バージョン 1.6 以降を使用してコンパイルしている場合は、DEBUG コンパイラー・オプションを選択し、以下の利点を活用してください。

C++ プログラム用 DEBUG コンパイラー・サブオプションの選択

ここでは、使用可能なデバッグ・シナリオと、正しい DEBUG コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。

C++ コンパイラーには、以下のアクションを制御するために、DEBUG コンパイラー・オプションとそのサブオプションが用意されています。

Debug Tool は、最適化された C プログラムのデバッグをサポートしません。 NOOPTIMIZE または OPTIMIZE(0) 以外の OPTIMIZE コンパイラー・オプションを使用しないでください。

以下の説明は、プログラムのデバッグに必要な機能を提供する DEBUG コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。

    どのシナリオの場合も、他の問題判別ツールを使用している場合は、z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。

  2. ユーザーが選択したシナリオの場合、以下のリソースがあることを確認してください。
  3. 次の作業を行う必要があるかどうかを確認する。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

C++ プログラム用の TEST または NOTEST コンパイラー・オプションの選択

ここでは、使用可能なデバッグ・シナリオと、正しい TEST コンパイラー・サブオプションを選択して特定のデバッグ・シナリオを作成する方法について説明します。

C++ コンパイラーは、TEST コンパイラー・オプションとそのサブオプションを提供して、フックとシンボル・テーブルの生成および配置を制御します。

Debug Tool は、最適化された C++ プログラムのデバッグをサポートしません。 NOOPTIMIZE 以外のコンパイラー・オプションは使用しないでください。

以下の説明は、プログラムのデバッグに必要な機能を提供する TEST コンパイラー・サブオプションの組み合わせを選択する際に役立ちます。

  1. 使用しているサイトのリソースに留意して、次のリストからデバッグ・シナリオを選択します。

    どのシナリオの場合も、他の問題判別ツールを使用している場合は、 z/OS XL C および C++ プログラムを参照して、すべての問題判別ツールで必要となるファイルの作成に必要なコンパイラー・オプションを、すべて指定していることを確認してください。

  2. 次の作業を行う必要があるかどうかを確認する。

コンパイラー・オプションおよびサブオプションの選択後に、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

表 9. C++ の NOTEST および TEST コンパイラー・オプションが Debug Tool に及ぼす影響の説明
コンパイラー・オプションまたはサブオプションの名前 影響の説明
NOTEST

以下のリストは、NOTEST コンパイラーが、「z/OS XL C/C++ ユーザーズ・ガイド」で説明されていない Debug Tool の動作に及ぼす影響を説明したものです。

  • プログラム・ステートメントをステップスルーすることはできません。プログラムの実行を停止できるのは、メイン・コンパイル単位の初期化時のみです。
  • プログラム変数を検証または使用することはできません。
  • ストレージおよびレジスターをリストできます。
  • Debug Tool の GOTO コマンドは使用できません。
ただし、引き続き「逆アセンブル」ビューを使用して、プログラムをデバッグすることができます。「逆アセンブル」ビューの使用方法については、逆アセンブル・プログラムのデバッグを参照してください。
TEST

次のリストは、TEST コンパイラー・オプションの、Debug Tool の動作に対する影響について説明したものです。これらは、z/OS XL C/C++ ユーザーズ・ガイド では説明されていません。

  • 1 つのソース・ファイルの最大行数が 131,072 を越えてはいけない。
  • 実行可能ステートメントを保管する組み込みファイルの最大数が 1024 を越えてはいけない。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

関数およびネストされたブロックでのフックの配置規則

関数およびネストされたブロックのフックの配置には、次の規則が適用されます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

ステートメントおよびパス点でのフックの配置規則

ステートメントおよびパス点用のフックの配置には、次の規則が適用されます。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

フックの機能およびフックが必要な理由の説明

フックを使用すると、ブレークポイントを設定できます。フックとは、コンパイル時にコンパイラーによってプログラムに挿入される 命令のことです。フックは、ブロックの入り口と出口、ステートメント境界、およびステートメント境界間でプログラムの流れが変わる可能性のあるプログラム内の場所 (パス点と呼ばれる) に置かれます。TEST コンパイラー・オプションを使用してプログラムをコンパイルし、NONE (または NOHOOK) 以外のサブオプションを指定すると、コンパイラーがプログラムにフックを挿入します。

動的デバッグ機能を使用して、フックなしで最大のパフォーマンスを得る方法

以下の状態では、フックなしでプログラムをコンパイルまたは作成することができます。その後、ブレークポイントを設定するか STEP コマンドを入力するときはいつでも動的デバッグ機能を使用して、実行時にフックを挿入できます。

動的デバッグ機能を使用することによって、次のいずれかのコンパイラーでコンパイルされた プログラムのデバッグ時の Debug Tool のパフォーマンスを向上させることもできます。

次のいずれかのコンパイラーを使用してコンパイルし、コンパイラーにフックを挿入させる場合は、動的デバッグ機能を使用することによって、デバッグ時のプログラムのパフォーマンスを向上させることができます。

Debug Tool の始動時に、動的デバッグ機能がアクティブ化されます。 Debug Tool は、コンパイラーでなく、動的デバッグ機能によって挿入されたフックを使用します。したがって、一部のパス・ブレークポイントは、使用不可になる場合があります。それらのブレークポイントを使用する必要がある場合は、SET DYNDEBUG OFF コマンドを入力して、動的デバッグ機能を非アクティブにします。その場合、Debug Tool は、動的デバッグ機能でなく、コンパイラーによって挿入されたフックを使用します。

シンボル・テーブルの機能、および、シンボル・テーブルを他の場所に保存するとアプリケーションを小さくできる理由の説明

シンボル・テーブルには、変数、その属性、およびストレージ内での位置についての説明が含まれます。Debug Tool は、変数を参照するときにこれらの記述を使用します。シンボル・テーブルは、プログラムのオブジェクト・ファイルまたは個々のデバッグ・ファイルに保存できます。次のいずれかのコンパイラーまたはアセンブラーを使用してプログラムをコンパイルまたはアセンブルする場合は、シンボル・テーブルを個別のデバッグ・ファイルに保存できます。

シンボル・テーブルを個々のデバッグ・ファイルに保存することにより、プログラムのロード・モジュールのサイズを小さくすることができます。

C および C++ プログラムの場合、DEBUG コンパイラー・オプションの FORMAT(DWARF) サブオプションを指定することで、デバッグ・テーブルを分離デバッグ・ファイル (.dbg ファイル) に保存することができます。Debug Tool は、z/OS C/C++ バージョン 1.6 以降で提供される、DEBUG コンパイラー・オプションをサポートします。

デバッグ・モードの選択

以下のリストを使用して、ユーザーのプログラムで使用するデバッグ・モードを決定してください。

TSO プログラムの場合
フルスクリーン・モードを選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
JES バッチ・プログラムの場合
バッチ・プログラムと対話する場合は、専用端末を使用するフルスクリーン・モード を選択します。サポートされているリモート・デバッガーを使用してバッチ・プログラムと対話する場合は、リモート・デバッグ・モードを選択します。バッチ・プログラムと対話しない場合は、バッチ・モードを使用し、コマンド・ファイルによりコマンドを指定し、ログ・ファイル内の結果を検討します。
UNIX システム・サービス・プログラムの場合
専用端末を使用するフルスクリーン・モード を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
CICS® プログラムの場合
3270 装置で Debug Tool と対話する場合は、フルスクリーン・モードを選択し、以下のいずれかの端末モードを選択します。

リモート・デバッガーを使用してプログラムをデバッグする場合は、リモート・デバッグ・モードを選択します。CADP プロファイルまたは DTCN プロファイルを更新する際に必要となるため、使用するリモート・デバッガーの TCP/IP アドレスをメモしておいてください。

単一端末モードを使用しない場合に、プログラムが WAIT オプションなしで画面を端末へ送信する場合、CICS 端末管理では、そのプログラムが EXEC CICS SEND ステートメントまたは EXEC CICS RECEIVE ステートメントを実行するまでその画面が保持されます。

分散プログラム・リンク (DPL) を使用するプログラムをデバッグする場合は、以下のいずれかのデバッグ・モードを選択できます。

DB2® プログラムの場合
専用端末を使用するフルスクリーン・モード を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
DB2 ストアード・プロシージャーの場合
専用端末を使用するフルスクリーン・モード を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
IMS TM プログラムの場合
専用端末を使用するフルスクリーン・モード を選択します。サポートされているリモート・デバッガーを使用する場合は、リモート・デバッグ・モードを選択します。
IMS バッチ・プログラムの場合
IMS バッチ・プログラムと対話する場合は、専用端末を使用するフルスクリーン・モード を選択します。サポートされているリモート・デバッガーを使用して IMS バッチ・プログラムと対話する場合は、リモート・デバッグ・モードを選択します。IMS バッチ・プログラムと対話しない場合は、バッチ・モードを選択し、コマンド・ファイルによりコマンドを指定し、ログ・ファイル内の結果を検討します。
IMS BTS プログラムの場合
ユーザーのプログラムおよびデバッグ・セッションを単一画面で実行する場合は、フルスクリーン・モードを選択します。BTS データをユーザーの TSO 端末に表示し、別の端末にデバッグ・セッションを表示したい場合は、専用端末を使用するフルスクリーン・モード を選択します。BTS データをユーザーの TSO 端末に表示し、サポートされているリモート・デバッガーにデバッグ・セッションを表示したい場合は、リモート・デバッグ・モードを選択します。
ALCS プログラムの場合
リモート・デバッグ・モードを選択する必要があります。

このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。

ブラウズ・モードでのデバッグ

何らかの実稼働環境でデバッグを行う場合は、ストレージの内容と実行フローを変更するユーザーの能力を制限することが必要になる可能性があります。ブラウズ・モードでデバッグを行うと、ストレージの内容と実行フローを変更するためのユーザーの能力を制限しながら、プログラムをデバッグすることができます。 Debug Tool は、現行ユーザーの RACF® 権限または EQAOPTS コマンド、あるいはその両方を使用して、ブラウズ・モードで稼働するかどうかを判断します。

ブラウズ・モードでデバッグする場合、以下のアクションは実行できません。

QUERY BROWSE MODE コマンドを使用すると、ブラウズ・モードがアクティブかどうかを判別できます。

ブラウズ・モードのインストールと制御の方法については、「Debug Tool カスタマイズ・ガイド」を参照してください。

フルスクリーン・モード、行モード、およびバッチ・モードでのブラウズ・モードのデバッグ

フルスクリーン・モード、行モード、またはバッチ・モードでデバッグを行っている場合、ブラウズ・モードがアクティブの場合、および以下のいずれかのコマンドを入力した場合、Debug Tool は、そのコマンドがブラウズ・モードでは許可されないことを示すメッセージを表示します。

ストレージ、レジスター、または同様のデータを変更する可能性のある expression または condition を含むコマンドを入力した場合、またはそのコマンドによっていずれかのユーザー作成機能が呼び出されるか実行の順序が変更される場合、Debug Tool は、そのコマンドがブラウズ・モードでは許可されないことを示すメッセージを表示します。

リモート・デバッグ・モードでのブラウズ・モードのデバッグ

リモート・デバッガーを使用していて、ブラウズ・モードがアクティブな場合、リモート・デバッガーによって以下のアクションの実行は許可されません。

さらに、リモート・デバッガーにより以下の制限が適用されます。

また、リモート・デバッガーは以下のデバッグ・コンソール・コマンドの入力を許可しません。

リモート・デバッグ・モードでデバッグを行っているときに異常終了が発生し、ブラウズ・モードがアクティブな場合、リモート・デバッガーによって継続オプションは提供されません。 異常終了の発生後にプログラム実行は続行できません。

ブラウズ・モードの制御

RACF アクセス権限の変更または EQAOPTS BROWSE コマンドの指定、あるいは両方とも行うか両方とも行わないことによって、ブラウズ・モードを制御 (アクティブ化または非アクティブ化) することができます。RACF アクセス権限を使用してブラウズ・モードを制御するには、ユーザーの RACF アクセス権限を以下の RACF 機能に変更します。

EQAOPTS コマンドを使用してブラウズ・モードを制御するには、EQAOPTS BROWSE コマンドに ON または OFF を指定します。

次の表では、これらの制御方法 (RACF 権限または EQAOPTS BROWSE コマンドを使用する) をどのように組み合わせることにより、ブラウズ・モードをアクティブ化または非アクティブ化できるかを示します。 これらの制御の使用方法については、「Debug Tool カスタマイズ・ガイド」を参照してください。

表 10. ブラウズ・モードをアクティブ化または非アクティブ化する RACF アクセス権限と EQAOPTS BROWSE コマンドのさまざまな組み合わせ
RACF アクセス権限の状況 EQAOPTS BROWSE コマンドの設定
設定しない (RACF の状況を使用) ON OFF
機能 (アクセス) が定義されていない 通常モード (ブラウズ・モードは非アクティブ) ブラウズ・モードがアクティブです 通常モード
ACCESS=NONE Debug Tool を使用できません Debug Tool を使用できません Debug Tool を使用できません
ACCESS=READ ブラウズ・モードがアクティブです ブラウズ・モードがアクティブです ブラウズ・モードがアクティブです
ACCESS=UPDATE (またはそれ以上) 通常モード ブラウズ・モードがアクティブです 通常モード

Debug Tool を開始する方法の選択

表 11 は、プログラムのタイプごとに Debug Tool の開始方法が異なることを示しています。このトピックでは、プログラムのタイプごとに、適用可能なそれぞれの方法が機能する環境について説明しています。その後、ユーザーのサイトに最適な方法を選択できます。このトピックを完了したら、使用するプログラムに最適な方法の選択も完了します。

表 11. TEST ランタイム・オプションの指定方法およびこれらの方法をサポートするサブシステム
EQADBCXT ユーザー出口ルーチンの使用 EQADICXT ユーザー出口ルーチンの使用 EQADDCXT ユーザー出口ルーチンの使用 DFSBXITA ユーザー出口の使用 CADP トランザクションの使用 DTCN トランザクションの使用 DB2 カタログの使用 プログラム内部から、CEETEST、 __ctest()、 または PLITEST への呼び出しをコーディングします CEEUOPT または CEEROPT の使用 TSO 内の JCL または CEEOPTS の割り振りで CEEOPTS DD ステートメントを使用します ユーザーのプログラム開始時に EXEC ステートメントのパラメーターを使用します ユーザーのプログラム開始時に RUN ステートメントのパラメーターを使用します ユーザーのプログラム開始時に CALL ステートメントのパラメーターを使用します EQASET トランザクションを介します3 EQANMDBG プログラムを介します4
TSO X X X X X4
JES バッチ X X X X X X4
UNIX システム・サービス X X X
CICS X X X X1
DB2 X X1 X X
DB2 ストアード・プロシージャー (PROGRAM TYPE=MAIN) X X2 X X1,2
DB2 ストアード・プロシージャー (PROGRAM TYPE=SUB) X5 X X
IMS TM X X X X X3
IMS バッチ X X X X X X4
IMS BTS X X X X X X X4
注:
  1. CEEROPT を使用して TEST ランタイム・オプションを指定することはできません。
  2. DB2 カタログ方式は、常に CEEUOPT に優先します。
  3. この方法は、非言語環境プログラムのアセンブラー・プログラムでのみ使用可能です。
  4. この方法は、非言語環境プログラムのプログラムでのみ使用可能です。
  5. この方法は、call_sub 関数で呼び出される DB2 ストアード・プロシージャーでのみ使用可能です。

表 11 では、各サブシステムに対して TEST ランタイム・オプションの指定方法を複数の異なる指定方法から選択できることを示します。以下のリストを使用すると、お客様の状況に最も適した方法を選択することができます (柔軟性と利便性順)。

TSO プログラムの場合
  1. 言語環境プログラムで開始するプログラムの場合、ランタイム・オプションの指定で最も柔軟な方法として、TSO で CEEOPTS の割り振りを使用して TEST ランタイム・オプションを指定します。
  2. ランタイム・オプションの数が少ない場合、または言語環境プログラム以外のプログラムに対して EQANMDBG を呼び出す必要がある場合、CALL ステートメントのパラメーターを使用して TEST ランタイム・オプションを指定します。
  3. CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定する場合、オプションを変更するたびにプログラムの再コンパイルが必要になります。
JES バッチ・プログラムの場合
  1. 言語環境プログラムで開始するプログラムの場合、ランタイム・オプションの指定で最も柔軟な方法として、JCL で CEEOPTS DD ステートメントを使用して TEST ランタイム・オプションを指定します。
  2. ランタイム・オプションの数が少ない場合、または言語環境プログラム以外のプログラムに対して EQANMDBG を呼び出す必要がある場合、EXEC ステートメント・オプションのパラメーターを使用して TEST ランタイム・オプションを指定します。
  3. CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定する場合、オプションを変更するたびにプログラムの再コンパイルが必要になります。
UNIX システム・サービス・プログラムの場合
  1. TEST ランタイム・オプションは、_CEE_RUNOPTS 環境変数を設定することによって指定します。
  2. CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定する場合、オプションを変更するたびにプログラムの再コンパイルが必要になります。
CICS プログラムの場合
  1. TEST ランタイム・オプションが入っているプロファイルを作成および保管するには、DTCN トランザクションまたは CADP トランザクションのいずれかを使用して TEST ランタイム・オプションを指定します。
  2. CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定する場合、オプションを変更するたびにプログラムの再コンパイルが必要になります。
DB2 プログラムの場合
  1. ランタイム・オプションの指定で最も柔軟な方法として、JCL で CEEOPTS DD ステートメントを使用するか、TSO で CEEOPTS の割り振りを使用して TEST ランタイム・オプションを指定します。
  2. ランタイム・オプションの数が少ない場合、RUN ステートメント・オプションのパラメーターを使用して TEST ランタイム・オプションを指定します。
  3. CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定する場合、オプションを変更するたびにプログラムの再コンパイルが必要になります。
PROGRAM TYPE が MAIN の DB2 ストアード・プロシージャーの場合
  1. 言語環境プログラム EQADDCXT 出口ルーチンを使用して TEST ランタイム・オプションを指定します。ユーザーは、独自のサブオプション・セットを使用してストアード・プロシージャーを実行できます。別のユーザーは、別のサブオプション・セットを使用してストアード・プロシージャーを実行またはデバッグできます。したがって、同時に複数のユーザーがそのストアード・プロシージャーを実行またはデバッグできます。
  2. サイトでこの出口ルーチンが使用不可の場合は、DB2 カタログを使用して TEST ランタイム・オプションを指定します。しかし、ユーザーは、特定の 1 つのサブオプション・セットを指定するよう制限されます。つまり、ストアード・プロシージャーを実行またはデバッグするすべてのユーザーは、同じサブオプション・セットを使用します。

両方のメソッドを実装した場合は、言語環境プログラム出口ルーチンが DB2 カタログに優先します。

PROGRAM TYPE が SUB の DB2 ストアード・プロシージャーの場合
IMS TM プログラムの場合
  1. EQADICXT ユーザー出口ルーチンを使用して TEST ランタイム・オプションを指定します。使用するプログラムが非言語環境プログラムのアセンブラー・プログラムである場合、EQASET トランザクションを介して選択します。
  2. サイトで EQADICXT ユーザー出口ルーチンが使用不可の場合は、DFSBXITA ユーザー出口ルーチンを使用して TEST ランタイム・オプションを指定します。
  3. サイトで EQADICXT または DFSBXITA ユーザー出口ルーチンが使用不可の場合は、CEEUOPT または CEEROPT を使用して TEST ランタイム・オプションを指定します。
  4. 前述のオプションがすべてサイトで使用不可の場合は、CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定します。ただし、オプションを変更するたびにプログラムの再コンパイルが必要になります。
IMS バッチ・プログラムの場合
  1. 言語環境プログラムで開始するプログラムの場合、最も柔軟な方法として、JCL で CEEOPTS の割り振りを使用して TEST ランタイム・オプションを指定します。
  2. EQADBCXT ユーザー出口ルーチンを使用して TEST ランタイム・オプションを指定します。使用するプログラムが非言語環境プログラムのプログラムである場合、EQANMDBG プログラムを介して選択します。
  3. サイトで EQADBCXT ユーザー出口ルーチンが使用不可の場合は、DFSBXITA ユーザー出口ルーチンを使用して TEST ランタイム・オプションを指定します。ただし、TRANSACTION ではなく PROGRAM を指定しなければなりません。
  4. サイトで EQADBCXT または DFSBXITA ユーザー出口ルーチンが使用不可の場合は、CEEUOPT または CEEROPT を使用して TEST ランタイム・オプションを指定します。
  5. 前述のオプションがすべてサイトで使用不可の場合は、CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定します。ただし、オプションを変更するたびにプログラムの再コンパイルが必要になります。
IMS BTS プログラムの場合
  1. 言語環境プログラムで開始するプログラムの場合、最も柔軟な方法として、JCL で CEEOPTS の割り振りを使用して TEST ランタイム・オプションを指定します。
  2. EQADICXT ユーザー出口ルーチンを使用して TEST ランタイム・オプションを指定します。使用するプログラムが非言語環境プログラムのプログラムである場合、EQANMDBG プログラムを介して選択します。
  3. サイトで EQADICXT ユーザー出口ルーチンが使用不可の場合は、EQADBCXT ユーザー出口ルーチンを使用して TEST ランタイム・オプションを指定します。
  4. サイトで EQADBCXT ユーザー出口ルーチンが使用不可の場合は、DFSBXITA ユーザー出口ルーチンを使用して TEST ランタイム・オプションを指定します。
  5. サイトで EQADICXT、EQADBCXT、または DFSBXITA ユーザー出口ルーチンが使用不可の場合は、CEEUOPT または CEEROPT を使用して TEST ランタイム・オプションを指定します。
  6. 前述のオプションがすべてサイトで使用不可の場合は、CEETEST、__ctest()、または PLITEST への呼び出しをコーディングして TEST ランタイム・オプションを指定します。ただし、オプションを変更するたびにプログラムの再コンパイルが必要になります。

Debug Tool の開始に使用する方法を特定した後、デバッグ・セッションの計画を参照して、次に完了する必要のある作業を決定してください。

旧バージョンの COBOL プログラムのデバッグ方法の選択

OS/VS COBOL コンパイラーでコンパイルされたプログラムは、以下のいずれかを行うことによってデバッグすることができます。

OS/VS COBOL プログラムを 1985 COBOL 標準に変換するには、以下のステップを行ってください。

  1. ご使用のロード・モジュール内の OS/VS COBOL プログラムを識別します。これを行うにはロード・モジュール・アナライザーを使用します。ロード・モジュール・アナライザーの使用方法については、付録G. Debug Tool ロード・モジュール・アナライザーを参照してください。
  2. COBOL CICS Command Level Conversion Aid (CCCA) を使用して OS/VS COBOL ソースを変換する。CCCA の使用方法は、「COBOL and CICS Command Level Conversion Aid for OS/390 & MVS & VM User's Guide」を参照してください。
  3. Enterprise COBOL for z/OS and OS/390 あるいは COBOL for OS/390 & VM のどちらかを使用して新しいソースをコンパイルする。

    Debug Tool Utilities の「Convert and Compile」オプションを使用して、23 を結合できます。

  4. Debug Tool を使用してオブジェクト・モジュールをデバッグする。

プログラムを変換、およびデバッグした後、以下のオプションのいずれかを行うことができます。

CCCA は、CMPR2 コンパイラー・オプションであらかじめコンパイルされた VS COBOL II、COBOL for MVS & VM、および COBOL for OS/390 & VM のプログラムを含め、どのレベルの COBOL ソース・プログラムでも入力として使用することができます。


1.
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。これにより、EQAOPTS MDBG コマンドのすべての設定 (デフォルト設定を含む) がオーバーライドされます。
2.
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。これにより、EQAOPTS MDBG コマンドのすべての設定 (デフォルト設定を含む) がオーバーライドされます。
3.
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。これにより、EQAOPTS MDBG コマンドのすべての設定 (デフォルト設定を含む) がオーバーライドされます。
4.
環境変数を指定できる場合は、環境変数 EQA_USE_MDBG を YES または NO に設定できます。これにより、EQAOPTS MDBG コマンドのすべての設定 (デフォルト設定を含む) がオーバーライドされます。