言語環境プログラム ユーザー出口を使用した TEST ランタイム・オプションの指定
Debug Tool には、カスタマイズされたバージョンの言語環境プログラムのユーザー出口 (CEEBXITA) が用意されています。このユーザー出口は、Language Environment® 初期化ロジックで呼び出されると、TEST ランタイム・オプションを返します。
Debug Tool は、3 つの異なる環境用にユーザー出口を提供しています。このトピックについては、システム・プログラマー専用の情報を加えて「Debug Tool カスタマイズ・ガイド」でも説明しています。
このユーザー出口は、命名パターンから構成される名前でユーザー制御データ・セットから TEST ランタイム・オプションを抽出します。命名パターンには、以下のトークンを含めることができます。
- &USERID
- Debug Tool は、&USERID トークンを現行ユーザーのユーザー ID に置き換えます。各ユーザーは、アプリケーションのデバッグ時に、それぞれ自分の TEST ランタイム・オプションを指定できます。このトークンはオプションです。
- &PGMNAME
- Debug Tool は、&PGMNAME トークンをメインプログラム (ロード・モジュール) の名前に置き換えます。プログラムごとに独自の TEST ランタイム・オプションを指定することができます。このトークンはオプションです。
Debug Tool には、以下の 2 つの形式でユーザー出口が用意されています。
- ロード・モジュール。3 つの環境用のロード・モジュールが、hlq.SEQAMOD データ・セット内にあります。デフォルトの命名パターンおよびメッセージ表示レベルが必要な場合は、このロード・モジュールを使用します。デフォルトの命名パターンは &USERID.DBGTOOL.EQAUOPTS です。デフォルトのメッセージ表示レベルは X'00' です。
- 編集可能なサンプル・アセンブラー・ユーザー出口。3 つの環境用のアセンブラー・ユーザー出口が、hlq.SEQASAMP データ・セット内にあります。また、既存バージョンの CEEBXITA とこのソースをマージすることもできます。デフォルト値と異なる命名パターンまたはメッセージ表示レベルが必要な場合に、このソース・コードを使用します。
Debug Tool には、以下のユーザー出口が用意されています。
表 14. さまざまな環境用の言語環境プログラムユーザー出口
| 環境 |
ユーザー出口名 |
次のタイプの DB2® ストアード・プロシージャーは、WLM 確立のアドレス・スペースで実行されます。
- タイプ MAIN1
- タイプ SUB (call_sub 関数により呼び出されます4)
|
EQADDCXT |
| IMS™ TM2 および BTS3 |
EQADICXT |
| バッチおよび BTS |
EQADBCXT |
注:
- EQADDCXT は、DB2 バージョン 7 以降用にサポートされています。DB2 RUNOPTS を指定した場合でも、EQADDCXT は DB2 RUNOPTS より優先されます。
- IMS TM では、IMS 端末にサインオンしない場合、TSOID オプションを使用して EQASET トランザクションを実行することが必要になる可能性があります。
EQASET トランザクションの実行方法については、/SIGN ON を発行しない言語環境プログラム IMS MPP のデバッグ を参照してください。
- BTS の場合、IO PCB のユーザー ID を使用した環境コマンド (./E) を指定する必要があります。例えば、ユーザー ID が ECSVT2 の場合、環境コマンドは ./E USERID=ECSVT2 になります。
- ユーザー出口をアプリケーション・プログラムではなく、言語環境プログラムのモジュール CEEPIPI の専用コピーにリンクしてください。
各ユーザー出口は、以下のいずれかの方法で使用できます。
- ユーザー出口をアプリケーション・プログラムへリンクできます。
- ユーザー出口を言語環境プログラムのモジュール (CEEBINIT または CEEPIPI、あるいはその両方) の専用コピーへリンクしてから、ユーザーがデバッグするモジュールの場合のみ、このモジュールが入っている SCEERUN データ・セットを、ロード・モジュール検索パスの CEE.SCEERUN のシステム言語環境プログラムのモジュールの前に配置できます。
それぞれの方法の利点と欠点について詳しくは、CEEBXITA の 2 つのリンク方法の比較を参照してください。
言語環境プログラムのユーザー出口を使用するためにプログラムを準備するには、以下の作業を行います。
- CEEBXITA のソース・コードの編集
- アプリケーション・プログラムへの CEEBXITA ユーザー出口のリンク または 言語環境プログラム ランタイム・モジュールの専用コピーへの CEEBXITA ユーザー出口のリンク。
- TEST ランタイム・オプション・データ・セットの作成と管理
CEEBXITA のソース・コードの編集
hlq.SEQASAMP にあるサンプル・アセンブラー・ユーザー出口を編集すれば、
以下の作業のいずれかを行うことにより、命名パターンまたはメッセージ表示レベルをカスタマイズできます。
- SMP/E USERMOD を使用して、hlq.SEQAMOD データ・セットの出口のコピーを更新します。通常、システム・プログラマーが USERMOD を実装します。 このタスクを行うには、hlq.SEQASAMP の以下のサンプル USERMOD を使用します。
| ユーザー出口名 |
USERMOD 名 |
| EQADDCXT |
EQAUMODC |
| EQADICXT |
EQAUMODD |
| EQADBCXT |
EQAUMODB |
- カスタマイズされた出口用のプライベート・ロード・モジュールを作成する。
ユーザー出口と同じ名前を持つアセンブラー・ユーザー出口を hlq.SEQASAMP からローカル・データ・セットにコピーします。命名パターンまたはメッセージ表示レベルを編集します。ロード・モジュールを生成する JCL をカスタマイズして実行します。
命名パターンの変更
TEST ランタイム・オプションが含まれたデータ・セットの命名パターンは、順次データ・セット名の形式になっています。オプションで、&USERID トークンを指定できます。これは Debug Tool によって現行ユーザーのユーザー ID に置換されます。また、&PGMNAME トークンを追加することもでき、これは、Debug Tool によってメインプログラム (ロード・モジュール) の名前に置き換えられます。
ただし、ユーザーがリモート・デバッガーの「DTSP プロファイル (DTSP Profile)」ビューを使用して TEST ランタイム・オプション・データ・セットを作成して管理する場合は、&PGMNAME トークンを指定しないでください。このビューでは、このトークンはサポートされていません。
ユーザー ID の先頭文字は名前修飾子には無効な場合があります。
&USERID トークンの前に文字を連結して、それをユーザー ID の接頭部文字にすることができます。例えば、トークンの前に文字 "P" を付けて、P&USERID とすることができます。P は、&USERID が現行ユーザー ID で置き換えられた後に有効になる名前修飾子です。
IMS の場合、&USERID トークンは次のいずれかの値と置き換えられることがあります。
- IMS ユーザー ID (ユーザーが IMS にサインオンしている場合)。
- TSO ユーザー ID (ユーザーが IMS にサインオンしていない場合)。
デフォルトの命名パターンは &USERID.DBGTOOL.EQAUOPTS です。これは、hlq.SEQAMOD で提供されるロード・モジュール内のパターンです。
下表に、名前パターンと、それに対応した、Debug Tool がトークンを値で置き換えた後のデータ・セット名の例を示します。
表 15. データ・セット命名パターン、トークンの値、および結果のデータ・セット名
| 命名パターン |
ユーザー ID |
プログラム名 |
ユーザー ID が置き換えられた後の名前 |
| &USERID.DBGTOOL.EQAUOPTS |
JOHNDOE |
|
JOHNDOE.DBGTOOL.EQAUOPTS |
| P&USERID.EQAUOPTS |
123456 |
|
P123456.EQAUOPTS |
| DT.&USERID.TSTOPT |
TESTID |
|
DT.TESTID.TSTOPT |
| DT.&USERID.&PGMNAME.TSTOPT |
TESTID |
IVP1 |
DT.TESTID.IVP1.TSTOPT |
TEST ランタイム・オプションを持つデータ・セットの命名パターンをカスタマイズするには、サンプル・ユーザー出口にある DSNT DC ステートメントの値を変更します。例えば、次のようになります。
* Modify the value in DSNT DC field below.
*
* Note: &USERID below has one additional '&', which is an escape
* character.
*
DSNT_LN DC A(DSNT_SIZE) Length field of naming pattern
DSNT DC C'&&USERID.DBGTOOL.EQAUOPTS'
DSNT_SIZE EQU *-DSNT Size of data set naming pattern
*
メッセージ表示レベルの変更
CEEBXITA のメッセージ表示レベルを変更できます。
WTO メッセージ表示レベルを設定する値を以下に示します。
- X'00'
- いかなるメッセージも表示しない。
- X'01'
- エラー・メッセージと警告メッセージを表示する。
- X'02'
- エラー・メッセージ、警告メッセージ、および診断メッセージを表示する。
デフォルト値 (hlq.SEQAMOD のロード・モジュールに入っている) は X'00' です。
メッセージ表示レベルをカスタマイズするには、サンプル・ユーザー出口にある MSGS_SW
DC ステートメントの値を変更します。例えば、次のようになります。
* The following switch is to control WTO message display level.
*
* x'00' - no messages
* x'01' - error and warning messages
* x'02' - error, warning, and diagnostic messages
*
MSGS_SW DC X'00' message level
*
CEEBXITA の 2 つのリンク方法の比較
以下の方法で CEEBXITA ユーザー出口をリンクできます。
- アプリケーション・プログラムにリンクする。
- 長所
- ユーザー出口はデバッグ対象のアプリケーション・プログラムだけに影響を及ぼします。つまり、ユーザーはアプリケーション・プログラムに対して Debug Tool を始動する時点を制御できます。また、Debug Tool を始動するために、JCL に変更を加える必要もありません。
- 欠点
- このユーザー出口を実動用に除去することを覚えておく必要があります。あるいは、それが通常のビルド・プロセスに含まれていない場合は、忘れずにアプリケーション・プログラムに再リンクする必要があります。
- 言語環境プログラム ランタイム・ロード・モジュール (CEEBINIT か CEEPIPI、またはその両方) の専用コピーへリンクする
- 長所
- このユーザー出口を使用するためにアプリケーション・プログラムを変更する必要はありません。また、アプリケーション・プログラム内に追加のモジュールをリンク・エディットする必要もありません。
- 欠点
- ランタイム環境の準備と保守の際に、以下の追加ステップを実行する必要があります。
- 1 つ以上の 言語環境プログラム ランタイム・ルーチンの専用コピーを作成する
- デバッグするモジュールの場合のみ、ランタイム環境をカスタマイズし、専用コピーをロード・モジュール検索パスの CEE.SCEERUN のシステム言語環境プログラムのモジュールの前に配置する
- 言語環境プログラムの保守を行うとき、ルーチンの再リンクが必要になる場合がある
- 新しいバージョンの言語環境プログラムにアップグレードした場合、ルーチンを再リンクする必要があります。
このユーザー出口をアプリケーション・プログラムへリンクし、同時に、アプリケーションの実行のロード・モジュール検索パス内にある 言語環境プログラム ランタイム・ロード・モジュールの専用コピーにもリンクした場合は、アプリケーション・ロード・モジュール内のユーザー出口のコピーが使用されます。
アプリケーション・プログラムへの CEEBXITA ユーザー出口のリンク
CEEBXITA ユーザー出口をアプリケーション・プログラムにリンクすることを選択した場合は、次のサンプル JCL を使用してください。これは、ユーザー出口をプログラム TESTPGM とリンクします。ユーザー出口をカスタマイズして専用ライブラリーに配置した場合、最初の SYSLIB DD ステートメントのデータ名 (hlq.SEQAMOD) を、変更したユーザー出口ロード・モジュールが含まれるデータ・セット名で置換します。
//SAMPLELK JOB ,
// MSGCLASS=H,TIME=(,30),MSGLEVEL=(2,0),NOTIFY=&SYSUID,REGION=0M
//*
//LKED EXEC PGM=HEWL,REGION=4M,
// PARM='CALL,XREF,LIST,LET,MAP,RENT'
//SYSLMOD DD DISP=SHR,DSN=USERID.OUTPUT.LOAD
//SYSPRINT DD DISP=OLD,DSN=USERID.OUTPUT.LINKLIST(TESTPGM)
//SYSUT1 DD UNIT=SYSDA,SPACE=(1024,(200,20))
//*
//SYSLIB DD DISP=SHR,DSN=hlq.SEQAMOD
// DD DISP=SHR,DSN=CEE.SCEELKED
//*
//OBJECT DD DISP=SHR,DSN=USERID.INPUT.OBJECT
//SYSLIN DD *
INCLUDE OBJECT(TESTPGM)
INCLUDE SYSLIB(EQADICXT)
NAME TESTPGM(R)
/*
言語環境プログラム ランタイム・モジュールの専用コピーへの CEEBXITA ユーザー出口のリンク
言語環境プログラムのランタイム・ロード・モジュールの専用コピーをカスタマイズすることを選択した場合は、確実にそれらのロード・モジュールの専用コピーが、使用するランタイム環境内の CEE.SCEERUN のシステム・コピーより前に配置されるようにしなければなりません。
次の表に、各環境に必要な 言語環境プログラム ランタイム・ロード・モジュールとユーザー出口を示します。
表 16. さまざまな環境に必要となる 言語環境プログラム ランタイム・ロード・モジュールとユーザー出口
| 環境 |
ユーザー出口名 |
CEE ロード・モジュール |
次のタイプの DB2 ストアード・プロシージャーは、WLM 確立のアドレス・スペースで実行されます。
- タイプ MAIN
- タイプ SUB (call_sub 関数により呼び出されます1)
|
EQADDCXT |
CEEPIPI |
| IMS TM および BTS |
EQADICXT |
CEEBINIT |
| バッチ |
EQADBCXT |
CEEBINIT |
注:
- この場合、言語環境プログラム バージョン 1.10 からバージョン 1.12 では APAR PM15192 用の PTF をインストールする必要があります。
サンプル hlq.SEQASAMP(EQAWLCEE) を編集して実行し、これらの更新された言語環境プログラム・ランタイム・ロード・モジュールを作成します。通常、これは Debug Tool をインストールするシステム・プログラマーが行います。 サンプルは以下のロード・モジュール・データ・セットを作成します。
- hlq.DB2SP.SCEERUN(CEEPIPI)
- hlq.IMSTM.SCEERUN(CEEBINIT)
- hlq.BATCH.SCEERUN(CEEBINIT)
それらのモジュール (CEEPIPI または CEEBINIT) に影響を及ぼす保守を言語環境プログラムに適用する場合、または新しいレベルの言語環境プログラムに移行する場合は、サンプルを再実行してそれらのモジュールの専用コピーを再ビルドする必要があります。
呼び出し方法 E を使用する場合、Debug Tool Utilities の ISPF パネルのオプション 8 「バッチ・デバッグ用 JCL (JCL for Batch Debugging)」では hlq.BATCH.SCEERUN が使用されます。
TEST ランタイム・オプション・データ・セットの作成と管理
TEST ランタイム・オプション・データ・セットは、言語環境プログラム・ランタイム・オプションが含まれている MVS™ データ・セットです。Debug Tool 言語環境プログラムのユーザー出口 (EQADDCXT、EQADICXT、および EQADBCXT) は、「Debug Tool カスタマイズ・ガイド」の『命名パターンの変更』に記載されている命名パターンに基づいてこのデータ・セットの名前を構成しています。
このデータ・セットは、次のいずれかの方法で作成できます。
端末インターフェース・マネージャー (TIM) を使用した TEST ランタイム・オプション・データ・セットの作成と管理
始める前に、端末インターフェース・マネージャー (TIM) へのログインに使用するユーザー ID に、TEST ランタイム・オプション・データ・セットの読み取りと書き込みを行う権限があることを確認してください。
端末インターフェース・マネージャーを使用して TEST ランタイム・オプション・データ・セットを作成するには、以下の手順を実行します。
- 端末インターフェース・マネージャーにログオンします。
- 「DEBUG TOOL 端末インターフェース・マネージャー (DEBUG TOOL TERMINAL INTERFACE MANAGER)」パネルで、 PF10 を押します。
- 「* TEST ランタイム・オプション・データ・セットの指定 (Specify TEST Run-time Option Data Set) *」パネルで、「データ・セット名 (Data Set Name)」フィールドに、システム管理者が指定した命名パターンに従ったデータ・セットの名前を入力します。データ・セットがカタログされていない場合は、ボリューム通し番号を入力します。
- Enter を押します。端末インターフェース・マネージャーがデータ・セットを検出できない場合は、「* TEST ランタイム・オプション・データ・セットの割り振り (Allocate TEST Run-time Option Data Set) *」パネルが表示されます。データ・セットに割り振りパラメーターを指定し、Enter を押します。端末インターフェース・マネージャーによりデータ・セットが作成されます。
- 「* TEST ランタイム・オプション・データ・セットの編集 (Edit TEST Run-time Option Data Set) *」パネルで、以下の変更を行います。
- プログラム名 (Program name(s))
- デバッグする最大 8 個のプログラムの名前を指定します。特定の名前 (EMPLAPP など)、ワイルドカード文字 (*) を指定した名前、またはワイルドカード文字のみ (すべての言語環境プログラムのプログラムのデバッグ) を指定できます。
- テスト・オプション (Test Option)
- TEST または NOTEST のどちらのランタイム・オプションを使用するかを指定します。
- テスト・レベル (Test Level)
- 使用する TEST レベル ALL、ERROR、または NONE を指定します。
- コマンド・ファイル (Commands File)
- コマンド・ファイルを使用する場合は、「Debug Tool リファレンスおよびメッセージ」の『TEST ランタイム・オプションの構文』トピックの『commands_file_designator』セクションに記載されている形式でコマンド・ファイルの名前を指定します。
- プロンプト・レベル (Prompt Level)
- PROMPT または NOPROMPT のどちらを使用するかを指定します。
- 設定ファイル (Preferences File)
- 設定ファイルを使用する場合は、「Debug Tool リファレンスおよびメッセージ」の『TEST ランタイム・オプションの構文』トピックの『preferences_file_designator』セクションに記載されている形式で設定ファイルの名前を指定します。
- EQAOPTS ファイル (EQAOPTS File)
- Debug Tool で実行時に EQAOPTS コマンドを実行したい場合は、EQAOPTS ファイルの名前を完全修飾データ・セット名として指定します。
- その他のランタイム・オプション (Other run-time options)
- その他の言語環境プログラム・ランタイム・オプションを入力します。
- 端末インターフェース・マネージャーで、使用するセッション・タイプ (デバッグ・モードおよび表示情報) を指定する TEST ランタイム・オプションの一部が「現在のデバッグ表示情報 (Current debug display information)」フィールドに表示されます。 セッション・タイプを変更するには、次のステップを実行してください。
- PF9 を押します。
- 「セッション・タイプの変更 (Change session type)」パネルで、次のいずれかのオプションを選択します。
- Debug Tool 端末インターフェース・マネージャーを使用したフルスクリーン・モード (Full-screen mode using the Debug Tool Terminal Interface Manager)
- 端末インターフェース・マネージャーにログオンして、プログラムをデバッグするために使用するユーザー ID を「ユーザー ID (User ID)」フィールドに入力します。
- リモート・デバッグ・モード (Remote debug mode)
- リモート・デバッガーのデーモンの「アドレス (Address)」フィールドに IP アドレスを入力し、「ポート (Port)」フィールドにポート番号を入力します。
- (オプション) Enter を押します。端末インターフェース・マネージャーにより変更が受け入れられ、パネルが最新表示されます。
- PF4 を押します。端末インターフェース・マネージャーに「* TEST ランタイム・オプション・データ・セットの編集 (Edit TEST Run-time Option Data Set) *」パネルが表示され、「現在のデバッグ・セッション・タイプのストリング (Current debug session type string):」に次のいずれかのストリングが表示されます。
- VTAM%userid (Debug Tool 端末インターフェース・マネージャーを使用したフルスクリーン・モード (Full-screen mode using the Debug Tool Terminal Interface Manager) を選択した場合。
- TCPIP&IP_address%port (リモート・デバッグ・モード (Remote debug mode) を選択した場合。
- PF4 を押して TEST ランタイム・オプション・データ・セットへの変更を保存し、端末インターフェース・マネージャーのメイン画面に戻ります。
このトピックで説明している内容に関して詳しくは、以降のトピックを参照してください。
- 「テスト・オプション (Test Option)」、「テスト・レベル (Test Level)」、および「プロンプト・レベル (Prompt Level) の各フィールドに指定する値について詳しくは、「Debug Tool リファレンスおよびメッセージ」の『TEST ランタイム・オプションの構文』トピックを参照してください。
- コマンド・ファイルまたは設定ファイルの作成については、コマンド・ファイルの作成 または 設定ファイルの作成 のトピックを参照してください。
- EQAOPTS ファイルの作成については、「Debug Tool リファレンスおよびメッセージ」または「Debug Tool カスタマイズ・ガイド」の『実行時の EQAOPTS コマンドの指定』トピックを参照してください。
- その他の言語環境プログラム・ランタイム・オプションについて詳しくは、「言語環境プログラム プログラミング・リファレンス」(SA88-8550) を参照してください。
- 「Debug Tool 端末インターフェース・マネージャーを使用したフルスクリーン・モード (Full-screen mode using the Debug Tool Terminal Interface Manager)」フィールドに指定する値について詳しくは、専用端末を使用するフルスクリーン・モード でのデバッグ・セッションの開始 を参照してください。
- 「リモート・デバッグ・モード (Remote debug mode)」フィールドに指定する値について詳しくは、Rational Developer for System z の Compiled Language Debugger コンポーネント または IBM Debug Tool plug-in for Eclipse のオンライン・ヘルプを参照してください。
Debug Tool Utilities を使用した TEST ランタイム・オプション・データ・セットの作成と管理
Debug Tool Utilities を使用して TEST ランタイム・オプション・データ・セットを作成するには、以下の手順を実行します。
- Debug Tool Utilities を開始し、オプション 6、「Debug Tool ユーザー出口データ・セット (Debug Tool User Exit Data Set)」を選択します。
- 新規または既存のデータ・セットの名前を入力します。名前が命名パターンと一致していることを確認してください。命名パターンが分からない場合は、システム管理者にお問い合わせください。以下の規則に留意してください。
- &PGMNAME トークンをデバッグ対象のプログラムの名前に置き換えます。このプログラムは、言語環境プログラム・エンクレーブのロード・モジュールのメイン CSECT でなければなりません。
- IMS の場合、&USERID トークンは次のいずれかの値と置き換えられることがあります。
- IMS ユーザー ID (ユーザーが IMS にサインオンしている場合)。
- TSO ユーザー ID (ユーザーが IMS にサインオンしていない場合)。
- 残りのフィールドに、使用する TEST ランタイム・オプションとデバッグする最大 8 個の追加プログラムの名前を入力します。