ここでは、次の状態で実行されるプログラムをデバッグするために Debug Tool を始動する方法について説明します。
以下のいずれかのオプションを選択して、MVS の下で TSO 内に Debug Tool を開始します。
DTSU を使用せずに MVS の下で TSO 内に Debug Tool を開始するには、以下のステップを行います。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
以下の CLIST の部分的な例は、Debug Tool ロード・ライブラリー・データ・セット (SEQAMOD) が リンク・リストまたは TSO ログオン・プロシージャーにない場合に、それを割り振る方法を示します。
例 1:
PROC 0 TEST
TSOLIB ACTIVATE DA('hlq.SEQAMOD')
END
例 2:
PROC 0 TEST
TSOLIB DEACTIVATE
FREE FILE(SEQAMOD)
ALLOCATE DA('hlq.SEQAMOD') FILE(SEQAMOD) SHR REUSE
TSOLIB ACTIVATE FILE(SEQAMOD)
END
CLIST の例のどちらかを MYID.CLIST(DTSETUP) に保管する場合、TSO READY プロンプトで次のコマンドを入力して CLIST を実行できます。
EXEC 'MYID.CLIST(DTSETUP)'
この CLIST が稼働して、適切な Debug Tool データ・セットが割り振られます。
以下の例で示していることは、コマンド行を使用して優先ファイルとログ・ファイルを割り振ってから、TEST ランタイム・オプション指定で COBOL プログラム (tstscrpt) を開始する方法です。
ALLOCATE FILE(insppref) DATASET(setup.pref) REUSE ALLOCATE FILE(insplog) DATASET(session.log) REUSE CALL 'USERID1.MYLIB(TSTSCRPT)' '/TEST'
この例で示していることは、デフォルトの Debug Tool ランタイム・サブオプションとデフォルトの言語環境プログラムのランタイム・オプションが想定済みであることです。
以下の例で示していることは、CLIST を使用して優先ファイル (debug.preferen) とログ・ファイル (debug.log ) を定義してから、TEST ランタイム・オプション指定で C プログラム (prog1) を開始できる方法です。
ALLOC FI(insplog) DA(debug.log) REUSE
ALLOC FI(insppref) DA(debug.preferen) REUSE
CALL 'MYID.MYQUAL.LOAD(PROG1)' +
' TRAP(ON) TEST(,*,;,insppref)/'
この CLIST の開始前に、これらのデータ・セットすべてが存在している必要があります。
以下のいずれかのオプションを選択して、バッチ・モードで Debug Tool を開始します。
DTSU を使用せずにバッチ・モードで Debug Tool を開始するには、以下のステップを行います。
MVS バッチ・ジョブは、以下のオプションのいずれかを選択することにより、フルスクリーン・モードでデバッグできます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
COBOL プログラム、EMPLRUN のバッチ・デバッグ・セッション用のサンプル JCL を次に示します。ジョブ・カードおよびデータ・セット名は、ご使用のシステムに適合するように変更する必要があります。
//DEBUGJCL JOB <appropriate JOB card information>
//* ****************************************************************
//* JCL to run a batch Debug Tool session
//* Program EMPLRUN was previously compiled with the COBOL
//* compiler TEST option
//* ****************************************************************
//STEP1 EXEC PGM=EMPLRUN,
// PARM='/TEST(,INSPIN,,)' 1
//*
//* Include the Debug Tool SEQAMOD data set
//*
//STEPLIB DD DISP=SHR,DSN=userid.TEST.LOAD
// DD DISP=SHR,DSN=hlq.SEQAMOD
//*
//* Specify a commands file with DDNAME matching the one
//* specified in the /TEST runtime option above
//* This example shows inline data but a data set could be
//* specified like: //INSPIN DD DISP=SHR,DSN=userid.TEST.INSPIN
//*
//INSPIN DD *
STEP;
AT *
PERFORM
QUERY LOCATION;
GO;
END-PERFORM;
GO;
QUIT;
/*
//*
//* Specify a log file for the debug session
//* Log file can be a data set with LRECL >= 42 and <= 256
//* For COBOL only, use LRECL <= 72 if you are planning to
//* use the log file as a commands file in subsequent Debug
//* Tool sessions. You can specify the log file like:
//* //INSPLOG DD DISP=SHR,DSN=userid.TEST.INSPLOG
//*
//INSPLOG DD SYSOUT=*,DCB=(LRECL=72,RECFM=FB,BLKSIZE=0)
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD DUMMY
//SYSOUT DD SYSOUT=*
/*
//
例: バッチ・モードで Debug Tool を実行するための JCLに記載された例を修正して、それによりバッチ・プログラムをフルスクリーン・モードでデバッグ可能になります。以下のいずれかの例に対して、行 1 を変更します。
// PARM='/TEST(,INSPIN,,MFI%TRMLU001:)'
// PARM='/TEST(,INSPIN,,VTAM%USERABCD:)'
言語環境プログラムの制御下で実行されない初期プログラムを持つ MVS バッチまたは TSO プログラム (非言語環境プログラムの COBOL プログラムを含む) をデバッグするには、Debug Tool プログラム EQANMDBG を使用して Debug Tool を始動します。
初期プログラムが言語環境プログラムの制御下で実行されず、後続のプログラムが言語環境プログラムの外部で実行される場合は、言語環境プログラムで始動されるプログラムに対する Debug Tool の始動で説明している方法で、すべてのプログラムをデバッグできます。
EQANMDBG を使用して Debug Tool を開始するには、以下のオプションのいずれかを実行します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
JCL、CLIST、または REXX EXEC を変更して EQANMDBG を開始する場合は、次のパラメーターを EQANMDBG に渡します。
これらのパラメーターは、次のいずれかの方法で指定できます。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
EQANMDBG へパラメーターを受け渡す最も簡単な方法は、PARM ストリングを変更して、デバッグするプログラムの名前と、オプションでその後に Debug Tool ランタイム・オプションおよびプログラムに必要なパラメーターを含める方法です。
このストリングの構文は、次のとおりです。

以下のテーブルには、サンプル JCL ステートメントが PARM ストリング変更後にどのように見えるかを比較してあります。
| オリジナルのサンプル JCL | 変更されたサンプル JCL |
|---|---|
//STEP1 EXEC PGM=MYPROG,PARM='ABC,X(12)' ... // |
//STEP1 EXEC PGM=EQANMDBG, // PARM='MYPROG,NATLANG(UEN)/ABC,X(12)' ... // |
プログラムに受け渡すユーザー・パラメーター・ストリングが長すぎて、必要な Debug Tool パラメーターを PARM ストリングに追加できない場合は、PARM ストリングを変更せずに、EQANMDBG DD ステートメントを使用して、必要なすべてのパラメーターを Debug Tool へ受け渡します。
EQANMDBG DD ステートメントを JCL へ追加するとき、または TSO セッションで EQANMDBG ファイルを割り振るときには、RECFM (F、V、または U) および LRECL を使用して、データ・セットを指し示すことができます。データ・セットには 1 行以上の行が含まれている必要があります。 データ・セットが複数行である場合は、各行からすべての末尾ブランクが除去されます。ただし、各行は 1 桁目から始まることが想定されており、先行ブランクはパラメーター・データの一部として扱われます。このファイルではシーケンス番号はサポートされません。
次の表では、元の JCL と変更後の JCL を比較しています。
| 元の JCL | 変更後の JCL |
|---|---|
//STEP1 EXEC PGM=MYPROG,PARM='ABC,X(12)' ... // |
//STEP1 EXEC PGM=EQANMDBG, // PARM='ABC,X(12)' //EQANMDBG DD * MYPROG, TEST(ALL,INSPIN,,MFI:*), NATLANG(ENU) /* ... // |
この方法では、デバッグするユーザー・プログラムの名前を PARM ストリングの一部として 入力でき、その後、他のすべての Debug Tool ランタイム・オプションを EQANMDBG DD ステートメントを使用して指定できます。
同じランタイム・パラメーターを複数のプログラムへ受け渡す必要があり、デバッグするプログラムの名前を PARM ストリングへ追加するためのスペースはあるが、すべてのランタイム・パラメーターを PARM ストリングへ追加するスペースがない場合は、この方法が適しています。
この方法を使用するときには、次の操作を行う必要があります。
次の表では、元の JCL と変更後の JCL を比較しています。
| 元の JCL | 変更後の JCL |
|---|---|
//STEP1 EXEC PGM=MYPROG,PARM='ABC,X(12)' ... // |
//STEP1 EXEC PGM=EQANMDBG, // PARM='MYPROG/ABC,X(12)' //EQANMDBG DD * *,TEST(ALL,INSPIN,,MFI:*),NATLANG(ENU) /* ... // |