Rational Developer for System z バージョン 7.6

TEST ランタイム・オプション・ストリングの記述

ここでの説明は、言語環境プログラムで稼働しているプログラムに適用されます。 言語環境プログラムで稼働していないプログラムについては、言語環境プログラムの外部で始動されるプログラムに対する Debug Tool の始動の説明を参照してください。

ここでは、TEST ランタイム・オプションの使用時に考慮する必要がある要因についていくつか説明し、例を示します。また、指定が必要になる可能性のあるその他のランタイム・オプションについても説明します。TEST ランタイム・オプションの構文について、「Debug Tool リファレンスおよびメッセージ」のトピック『TEST ランタイム・オプション』で説明しています。

Debug Tool がどのようにしてユーザーのアプリケーションの制御を獲得し、デバッグ・セッションを開始するかを指定する場合には、TEST ランタイム・オプションを使用します。TEST オプションの最も単純な形式は、TEST にサブオプションを指定しない形式です。ただし、サブオプションを指定すると、柔軟性が増します。使用可能なサブオプションのタイプには 4 つあり、以下にそれぞれを要約しています。

test_level
ユーザーのプログラムが提起する高水準言語条件のうち、どれが Debug Tool にプログラムの制御を渡すのかを判断する
commands_file
どの基本コマンド・ファイルがコマンドの初期ソースとして使用されるかを判断する
prompt_level
初期コマンド・リストをプログラム初期化時に無条件で実行するかどうかを決定する
preferences_file
Debug Tool のプロファイル・パネルの 設定のカスタマイズといった、デバッグ環境のデフォルト設定を指定する ために使用できる、セッション・パラメーターおよびファイルを指定する

TEST ランタイム・オプションの使用時における特別の考慮事項

TEST ランタイム・オプションを使用する場合、いくつかの考慮点があるので、このセクションで説明します。

ユーザー・プログラムでの TEST サブオプションの定義

C、C++、または PL/I では、サブオプションを含む TEST オプションを、#pragma runopts または PLIXOPT ストリングで定義しておき、実行時にサブオプションの無い TEST を指定することができます。これにより、#pragma runopts または PLIXOPT ストリングで指定したサブオプションが 有効になります。

TEST/NOTEST ランタイム・オプションは、SET TEST コマンドを使用して随時変更可能です。

サブオプションと NOTEST

いくつかのサブオプションが NOTEST により使用できなくなります が、それらは引き続き許可されます。すなわち、プログラムを NOTEST オプションを使用して開始し、後でデバッグ・セッションを行うときに有効にしたいサブオプションを指定できます。プログラムは、Debug Tool が制御を得ることなく実行を開始します。

NOTEST で指定したサブオプションを使用可能にするには、プログラムの実行時に Debug Tool を開始するため、ライブラリー・サービス呼び出し (例えば、CEETESTPLITEST、または __ctest() 関数など) を使用します。

暗黙ブレークポイント

有効なテスト・レベルにより、ある条件で、あるいは特定のプログラム箇所で Debug Tool が制御を得る場合には、関連アクションのない暗黙ブレークポイントが想定されます。これは、初期コマンド・ストリングまたは基本コマンド・ファイルを使用する その条件または箇所のブレークポイントを事前に定義していない場合にも起こります。制御は、端末あるいは基本コマンド・ファイルに渡されます。

基本コマンド・ファイルと USE ファイル

基本コマンド・ファイルは、代用端末の役割をします。コマンドのソースとしてこれにアクセスした後、すべてのコマンドが実行されるまで、またはアプリケーションが終了するまで、その役割をこの機能で果たし続けます。基本コマンド・ファイルが USE ファイルと異なる点は、USE ファイルではプログラムに制御を戻す コマンド (STEPGO など) があると、その後のコマンドはすべて廃棄される点です。ただし、基本コマンド・ファイル内から開始された USE ファイルは、基本コマンド・ファイルの特性を継承し、完了するまで実行できます。

ランタイム・オプションに含まれるコマンド・ストリングから成るか、基本コマンド・ファイルから成るかにかかわらず、初期コマンド・リストには、2 次ファイルからコマンドを得るための USE コマンドを含めることができます。基本コマンド・ファイルから始動された場合には、USE ファイルは基本コマンド・ファイルの特性を継承します。

バッチ・モードでの実行

バッチ・モードの場合、コマンド・ファイルの終わりに達すると、プログラムが終了するまで、コマンドが要求されるたびに GO コマンドが実行されます。プログラムの終了後に別のコマンドが要求されると、QUIT コマンドが強制的に実行されます。

異なる点での Debug Tool の始動

Debug Tool がプログラム初期化中に始動される場合は、メイン・プロローグのすべての命令が実行される前に始動されます。 その時点では、プログラム・ブロックはアクティブにならず、メイン・プロシージャー内の変数は参照できず、コンパイル単位を呼び出すこともできず、GOTO コマンドは使用できません。ただし、静的変数に対する参照は可能です。

この時点で、他のコマンドを入力する前に STEP コマンドを入力すると、プログラムと言語環境プログラムの初期化が両方完了し、すべての変数にアクセスできるようになります。また、すべての有効なコマンドを入力することができるようになります。

プログラムの実行中に (例えば、CEETEST 呼び出しを使用して) Debug Tool が始動された場合は、アプリケーションに関連付けられたコンパイル単位をすべては検出できない可能性があります。現在活動状態になっていないロード・モジュール内のコンパイル単位は、Debug Tool の初期設定よりも前に実行されていたとしても、Debug Tool には認識されません。

例えば、ロード・モジュール mod1 がコンパイル単位 cu1cu2 を含み、両方とも TEST オプションでコンパイルされたとします。コンパイル単位 cu1 はロード・モジュール mod2 に含まれている cux を呼び出し、cux は処理が完了すると制御を戻します。コンパイル単位 cu2 は、CEETEST ライブラリー・サービスへの呼び出しを含んでいます。CEETEST の呼び出しによって Debug Tool が初期化されると、cu1 および cu2 のみが Debug Tool に認識されます。Debug Tool は cux を認識しません。

初期コマンド・ストリングは、Debug Tool がプロセスで最初に初期化されるときに、一度だけ実行されます。

優先ファイル内のコマンドは、Debug Tool がプロセスで最初に初期化されるときに、一度だけ実行されます。

セッション・ログ

セッション・ログは、入力されたコマンド、およびそれらのコマンドの実行の結果を保管します。セッション・ログは、コマンドの実行の結果をコメントとして保存します。これにより、セッション・ログをコマンド・ファイルとして使用できます。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

言語環境プログラムランタイム・オプションの優先順位

言語環境プログラムのランタイム・オプションは、以下の優先順位に従って 処理されます (最高位から最下位へ)。

  1. CEEDOPT ファイル内にある、NONOVR 属性によってオーバーライド不可と 指定されている、インストール・オプション。
  2. 言語環境プログラムのアセンブラー・ユーザー出口によって指定されたオプション。CICS® 環境 において Debug Tool は、DTCN トランザクションを使用し、また、アプリケーションとリンク・エディットされている、言語環境プログラムのカスタマイズされた ユーザー出口 EQADCCXT を使用します。IMS™ バージョン 8 環境において IMS は、言語環境プログラムのランタイム・オプション・テーブルのオプションに最も近いオプションを検索します。このテーブルは、Debug Tool Utilities を使用して編集できます。
  3. アプリケーションを呼び出した時、TEST ランタイム・オプションで指定したオプション。ただし、ランタイム・オプションの受諾が言語環境プログラムにより不可能になっていない場合に限ります (EXECOPS/NOEXECOPS)。
  4. ソース・プログラムの中で (#pragma または PLIXOPT により) 指定されたオプション、または CEEUOPT により指定され、アプリケーションとリンク・エディットされているオプション。

    ソース・プログラムのオブジェクト・モジュールが、CEEUOPT オブジェクト・モジュールよりも前にリンケージ・エディターに入力される場合は、これらのオプションが CEEUOPT のデフォルトを オーバーライドします。リンケージ・エディターの制御ステートメントを使用して、オブジェクト・ モジュールが入力される順序を強制的に決定することができます。

  5. CEEROPT 内で定義された領域全体の CICS または IMS オプション。
  6. CEEDOPT においてインストール時に指定されたオプションのデフォルト。
  7. IBM 提供のデフォルト。

サブオプションは、以下の順序で処理されます。

  1. コマンド行で入力したコマンドが、デフォルトあるいは実行時に指定したサブ オプションに優先します。
  2. 優先ファイルから実行されるコマンドは、コマンド・ストリングおよびすべてのデフォルト、または実行時に指定されたサブオプションを指定変更します。
  3. コマンド・ファイルからのコマンドが、デフォルトのサブオプション、実行時に 指定したサブオプション、コマンド・ストリングのコマンド、および優先ファイルの コマンドに優先します。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

例: TEST ランタイム・オプション

以下の TEST ランタイム・オプションの使用例は、ユーザー・プログラムで使用可能なランタイム・オプションを説明しています。ここでは、完全なコマンドは示されていません。TEST ランタイム・オプションの完全な構文は、「Debug Tool リファレンスおよびメッセージ」に記載されています。

NOTEST
これを指定すると、プログラム初期設定時に Debug Tool は始動されません。CEETESTPLITEST、または __ctest() の呼び出しを行うと、プログラムの実行時に Debug Tool が始動されることに注意してください。
NOTEST(ALL,MYCMDS,*,*)
これを指定すると、プログラム初期設定時に Debug Tool は始動されません。CEETESTPLITEST、または __ctest() の呼び出しを行うと、プログラムの実行時に Debug Tool が始動されることに注意してください。Debug Tool が始動されると、指定されたサブオプションが有効となり、MYCMDS の DD 名に割り振られたファイル内のコマンドが処理されます。

NOTEST を指定し、Debug Tool が最初にアクティブになったプログラムから制御が戻ると、非言語環境プログラムのプログラムをデバッグしたり、非言語環境プログラムのイベントを検出したりすることができなくなります。

TEST
サブオプションを指定せずに TEST を指定すると、他の可能なサブオプションの定義が検査されます。例えば、C と C++ は、#pragma runopts を使用して、コンパイル時にデフォルトのサブオプションを選択できます。同様に、PL/I では PLIXOPT ストリングが提供されています。言語環境プログラムでは、CEEXOPT マクロが提供されます。このマクロを使用して、インストールおよびプログラム特定のデフォルトを 指定することができます。

サブオプションについての定義が他に存在しない場合、IBM 提供のデフォルトのサブオプションは (ALL, *, PROMPT, INSPREF) です。

TEST(ALL,*,*,*)
Debug Tool は最初は始動されません。しかし、ユーザー・プログラムで、ある条件あるいはアテンションが発生すると、CEETESTPLITEST、あるいは __ctest() への呼び出しと同じように Debug Tool が始動されます。基本コマンド・ファイルも優先ファイルも使用されません。
TEST(NONE,,*,*)
Debug Tool は、最初は始動されず、「実動モード」で実行を開始します。すなわち、プログラムの処理には最小限の影響しか与えません。しかし、CEETESTPLITEST、あるいは __ctest() を使用して Debug Tool を始動することができます。
TEST(ALL,test.scenario,PROMPT,prefer)
Debug Tool は、環境初期設定の終わりで、メインプログラムのプロローグが完了する前に始動されます。DD 名 prefer は優先ファイルとして処理され、データ・セット test.scenario から後続のコマンドが検出されます。コマンド・ファイル内のすべてのコマンドが処理され、プロンプトが出されたときに STEP コマンドを発行すると、またはコマンド・ファイル内で STEP コマンドが実行されると、メイン・ブロックが初期化を完了します (つまり、その AUTOMATIC ストレージが取得され、初期値が設定されます)。なんらかの理由によって後で再び Debug Tool に入ると、test.scenario からのコマンドの取得を続け、この処理をファイルの終わりに達するまで繰り返します。ファイルの終わりに達すると、コマンドはユーザーの端末から得られます。
TEST(ALL,,,MFI%F000:)
CICS で実行中の場合、Debug Tool は画面を端末 ID F000 に表示します。
TEST(ALL,,,MFI%TRMLU001:)
Debug Tool の端末インターフェース・マネージャーを使用せずに、フルスクリーン・モード (VTAM 端末) を使用する場合。VTAM® LU TRMLU001 が表示用に使用されます。この端末は、Debug Tool が始動したとき、VTAM に認識されていなければならず、セッション中であってもなりません。
TEST(ALL,,,MFI%SYSTEM01.TRMLU001:)
以下の状態の場合に使用します。 ネットワーク・ノード SYSTEM01 の VTAM LU TRMLU001 が表示用に使用されます。 この端末は、Debug Tool が始動したとき、VTAM に認識されていなければならず、セッション中であってもなりません。
TEST(ALL,,,VTAM%USERABCD:)
Debug Tool の端末インターフェース・マネージャー使用時に、フルスクリーン・モード (VTAM 端末) を使用する場合。ユーザーが、ユーザー ID USERABCD を指定して Debug Tool の端末インターフェース・マネージャーをアクセスしました。
リモート・デバッグ・モード
ユーザーが リモート・デバッグ・モードで作業している場合、すなわち、ユーザーのホスト・アプリケーションをワークステーションからデバッグしている場合、次の例が適用できます。
TEST(,,,TCPIP&machine.somewhere.something.com%8001:*)
TEST(,,,TCPIP&9.24.104.79%8001:*)
NOTEST(,,,TCPIP&9.24.111.55%8001:*)

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。

COBOL II および PL/I プログラムでの追加のランタイム・オプションの指定

COBOL プログラムと PL/I プログラムをデバッグする場合、STORAGE および TRAP(ON) という 2 つのランタイム・オプションが追加で必要となります。

STORAGE ランタイム・オプションの指定

STORAGE ランタイム・オプションは、割り振りおよび解放時 の初期のストレージの内容と、「ストレージ不足」状態のために予約される ストレージ量を制御します。STORAGE ランタイム・オプションのパラメーターの 1 つを 指定すると、そのパラメーターによって処理される割り振り済みストレージが すべてその値に初期設定されます。プログラムが、自己初期化変数を持っていない場合は、ユーザーが STORAGE ランタイム・オプションを指定する必要があります。

TRAP(ON) ランタイム・オプションの指定

TRAP(ON) ランタイム・オプションは、Debug Tool に例外を渡す言語環境プログラム条件処理ハンドラーを完全に使用可能にする場合に使用します。例外が起こったときに Debug Tool が自動的に制御を行うように したい場合、TEST オプションと一緒に必ずこのオプションを 使用する必要があります。また、GO BYPASS コマンドを使用する場合や、 作成したハンドラーをデバッグする場合にも TRAP(ON) ランタイム・オプションを 使用してください。Debug Tool で TRAP(OFF) を使用すると、条件、異常終了、または割り込みの発生時の オペレーティング・システムによるアプリケーションや Debug Tool のキャンセルなど、予測不能の結果が発生します。

注:
このオプションは、OS PL/I および VS COBOL II STAE/NOSTAE オプションに代わるものです。

C および C++ での #pragma runopts による TEST ランタイム・オプションの指定

TEST ランタイム・オプションは、次の #pragma を使用して、プログラムの始動時に、またはユーザーのソースの中で直接指定することができます。

#pragma runopts (test(suboption,suboption...))

この #pragma は、ユーザーのソース・ファイル内の最初のステートメントよりも前に なければなりません。例えば、ソース・ファイルで次のように指定し、

#pragma runopts (notest(all,*,prompt))

コマンド行で TEST と入力すると、その結果は、以下のようになります。

TEST(ALL,*,PROMPT).

TEST は、#pragma で指定した NOTEST オプションをオーバーライドし、TEST 自体にはサブオプションがないため、サブオプション ALL*、および PROMPT は有効なまま残ります。

異なる #pragmas が指定された 2 つ以上のコンパイル単位を一緒にリンクすると、最初のコンパイルに指定されたオプションが採用されます。複数のエンクレーブ (コンパイル単位) がある場合、それぞれの新規プロセスで 最初に始動されたエンクレーブで指定したオプションが採用されます。

コマンド行と #pragma にオプションを指定すると、NOEXECOPS を指定しない限り、#pragma で指定されたオプションは、コマンド行で指定されたオプションによってオーバーライドされます。#pragma または EXECOPS コンパイラー・オプションで NOEXECOPS を指定すると、コマンド行で指定したオプションは有効になりません。

ここで述べた内容に関して詳しくは、以下のトピックを参照してください。


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

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