このトピックでは、CICS® プログラムのデバッグ中に実行できる作業と、いくつかの制限を説明します。
CICS の下でプログラムをデバッグするには、その前に、 以下の作業が完了していることを確認してください。
DESCRIBE CHANNEL コマンドを使用することにより、CICS チャネルの内容を表示でき、LIST CONTAINER コマンドを使用することにより、コンテナーの内容を表示できます。
「CICS Transaction Server for z/OS CICS アプリケーション・プログラミング・ガイド バージョン 2 リリース 2」の『拡張プログラム間データ転送: 現代の COMMAREA としてのチャネル (Enhanced inter-program data transfer: channels as modern-day COMMAREAs)』のセクションで、コンテナーとチャネルの利点と、それらをプログラム内で使用する方法が説明されています。
現行チャネル内のコンテナーのリストを表示するには、コマンド DESCRIBE CHANNEL を入力します。別のチャネル内のコンテナーのリストを表示するには、コマンド DESCRIBE CHANNEL channel_name を入力します。ここで、channel_name は特定のチャネルの名前です。いずれの場合も、Debug Tool は次に示すようなリストを表示します。
COBOL LOCATION: ZCONPRGA :> 274.1
Command ===> Scroll ===> PAGE
MONITOR -+----1----+----2----+----3----+----4----+----5----+----6- LINE: 1 OF 2
******************************* TOP OF MONITOR ********************************
----+----1----+----2----+----3----+----4----
0001 1 ********** AUTOMONITOR **********
0002 01 DFHC0160 'PrgA-ChanB-ContC'
****************************** BOTTOM OF MONITOR ******************************
SOURCE: ZCONPRGA -1----+----2----+----3----+----4----+----5--- LINE: 272 OF 307
272 * FLENGTH(LENGTH OF PrgA-ChanB-XXXXX) .
273 * END-EXEC .
274 Move 'PrgA-ChanB-ContC' to dfhc0160 .
275 Move 'PrgA-CHANB' to dfhc0161 .
276 Call 'DFHEI1' using by content x'341670000720000002000000 .
277 - '00f0f0f0f5f3404040' by content x'0000' by reference .
278 PrgA-ChanB-XXXXX by reference dfhc0160 by content LENGTH .
279 PrgA-ChanB-XXXXX by content x'0000' by content x'0000' by .
280 content x'0000' by content x'0000' by content x'0000' by .
281 content x'0000' by content x'0000' by content x'0000' by .
282 content x'0000' by content x'0000' by content x'0000' by .
283 content x'0000' by content x'0000' by content x'0000' by .
LOG 0----+----1----+----2----+----3----+----4----+----5----+-- LINE: 147 OF 289
0147 DESCRIBE CHANNEL * ;
0148 CHANNEL PrgA-ChanB
0149 CONTAINER NAME SIZE
0150 ------------------------------------
0151 PrgA-ChanB-ContC 21
0152 PrgA-ChanB-ContB 21
0153 PrgA-ChanB-ContA 21
0154 CHANNEL PRGA-CHANA
0155 CONTAINER NAME SIZE
0156 ------------------------------------
0157 PRGA-CHANA-CONTC 21
PF 1:? 2:STEP 3:QUIT 4:LIST 5:FIND 6:AT/CLEAR
PF 7:UP 8:DOWN 9:GO 10:ZOOM 11:ZOOM LOG 12:RETRIEVE
現行チャネル内のコンテナーの内容を表示するには、コマンド LIST CONTAINER container_name を入力します。ここで、container_name は特定のチャネルの名前です。別のチャネル内のコンテナーの内容を表示するには、コマンド LIST CONTAINER channel_name container_name を入力します。ここで、channel_name は別のチャネルの名前です。いずれの場合も、Debug Tool は次の図に示すような形式でコンテナーの内容を表示します。
COBOL LOCATION: ZCONPRGA :> 211.1
Command ===> Scroll ===> PAGE
MONITOR -+----1----+----2----+----3----+----4----+----5----+----6- LINE: 1 OF 2
******************************* TOP OF MONITOR ********************************
----+----1----+----2----+----3----+----4----
0001 1 ********** AUTOMONITOR **********
0002 01 DFHC0160 'PRGA-CHANA-CONTC'
****************************** BOTTOM OF MONITOR ******************************
SOURCE: ZCONPRGA -1----+----2----+----3----+----4----+----5--- LINE: 209 OF 307
209 * FLENGTH(LENGTH OF PrgA-ChanB-ContA) .
210 * END-EXEC .
211 Move 'PrgA-ChanB-ContA' to dfhc0160 .
212 Move 'PrgA-ChanB' to dfhc0161 .
213 Call 'DFHEI1' using by content x'341670000720000002000000 .
214 - '00f0f0f0f3f5404040' by content x'0000' by reference .
215 PrgA-ChanB-ContA by reference dfhc0160 by content LENGTH .
216 PrgA-ChanB-ContA by content x'0000' by content x'0000' by .
217 content x'0000' by content x'0000' by content x'0000' by .
218 content x'0000' by content x'0000' by content x'0000' by .
219 content x'0000' by content x'0000' by content x'0000' by .
220 content x'0000' by content x'0000' by content x'0000' by .
LOG 0----+----1----+----2----+----3----+----4----+----5----+---- LINE: 15 OF 25
0015 STEP ;
0016 DESCRIBE CHANNEL * ;
0017 CHANNEL PRGA-CHANA
0018 CONTAINER NAME SIZE
0019 ------------------------------------
0020 PRGA-CHANA-CONTC 21
0021 PRGA-CHANA-CONTB 21
0022 PRGA-CHANA-CONTA 21
0023 LIST CONTAINER PRGA-CHANA PRGA-CHANA-CONTC ;
0024 000C7F78 D7D9C7C1 60C3C8C1 D5C160C3 D6D5E3C3 *PRGA-CHANA-CONTC*
0025 000C7F88 60C4C1E3 C1 *-DATA *
PF 1:? 2:STEP 3:QUIT 4:LIST 5:FIND 6:AT/CLEAR
PF 7:UP 8:DOWN 9:GO 10:ZOOM 11:ZOOM LOG 12:RETRIEVE
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
ここでは、DISABLE コマンドおよび ENABLE コマンドを使用してパターン・マッチ・ブレークポイントを制御する方法について説明します。 パターン・マッチ・ブレークポイントは、DTCN または CADP プロファイルで指定されたプログラムまたはコンパイル単位の、名前または名前の一部によって識別されるブレークポイントです。
DISABLE コマンドは、現行のデバッグ・セッションを開始したデバッグ・プロファイルを操作し、プログラムがデバッグされないようにします。DISABLE コマンドを入力するときは、デバッグしたくないプログラムまたはコンパイル単位の、名前または名前の一部を指定します。Debug Tool は、ユーザーが指定した名前または名前の一部 (パターン) に一致する名前を持つプログラムまたはコンパイル単位を検出すると、そのプログラムをデバッグしません。ENABLE コマンドを入力するときは、デバッグしたいパターン (プログラムまたはコンパイル単位のフルネームまたは名前の一部) を指定します。パターンは、前に入力した DISABLE コマンドで指定したプログラムまたはコンパイル単位の名前に一致する必要があります。
作業を開始する前に、どのデバッグ・プロファイルが Debug Tool を始動したのか (DTCN か CADP か) が分かっていること、および DTCN の場合は「Program Id(s)」フィールドに指定した名前、CADP の場合は「Program」フィールドか「Compile Unit」フィールド、またはその両方に指定した名前が分かっていることを確認してください。
DISABLE コマンドを使用して Debug Tool がプログラムをデバッグしないようにするには、以下のステップを実行します。
例えば、以下のような場合に、Debug Tool がプログラム ABD2 をデバッグしないようにするには、コマンド DISABLE CADP PROGRAM ABD2 を入力します。
例えば、以下のような場合に、Debug Tool がプログラム STAR2 をデバッグしないようにするには、コマンド DISABLE DTCN PROGRAM STAR2 を入力します。
ENABLE コマンドを使用して、前に使用不可にしたプログラムのデバッグを許可するには、以下のステップを実行します。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
Debug Tool は EXEC CICS RETURN で停止し、次のメッセージを表示します。
CEE0199W The termination of a thread was signaled due to a STOP statement.
アプリケーション内の EXEC CICS RETURN ステートメントごとに Debug Tool が停止するのを防ぎ、 このメッセージを抑制するには、SET TEST ERROR コマンドで TEST レベルを ERROR に 設定します。
CICS は、さまざまなタイプの記憶保護違反を検出できます。「CICS Problem Determination Guide」に、CICS で検出できる記憶保護違反のタイプと、CICS でそれらが自動的に検出される場合が説明されています。Debug Tool に 1 つのタイプの記憶保護違反 (ユーザー・ストレージ・エレメントのストレージ・チェック・ゾーンがオーバーレイされたかどうか) を検出するよう要求することができます。 この要求は、いつでも行うことができます。
Debug Tool に記憶保護違反の有無を検査するよう指示するには、コマンド CHKSTGV を入力します。Debug Tool は、ユーザーがデバッグしているタスクに記憶保護違反がないかどうか、検査します。
このコマンドをブレークポイントの一部として組みこむことにより、記憶保護違反の有無をチェックする頻度を増やすよう Debug Tool に指示できます。例えば、以下のコマンドは COBOL プログラム内のステートメントごとに記憶保護違反の有無をチェックし、現行プロシージャー内で違反が検出された場合は Debug Tool を停止させます。
AT STATEMENT *
PERFORM
CHKSTGV ;
IF %RC = 0 THEN
GO ;
END-IF ;
END-PERFORM ;
すべてのステートメントでチェックを実行する場合は、できるだけ少ないステートメントに対してチェックが実行されるようにしてください。チェックにより、パフォーマンスに影響を与えるオーバーヘッドが生じるからです。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
疑似会話型 CICS プログラムのデバッグ中に Debug Tool の表示設定 (カラー設定など) を 設定した場合、Debug Tool がデフォルト設定を復元する可能性があります。 プログラムが Debug Tool を再始動するたびに変更が引き続き有効になるようにするには、 優先ファイルまたはコマンド・ファイルに表示設定を保管してください。
以下のどの指定を AUTO に設定した場合も、これらの指定を使用して Debug Tool 設定の間でブレークポイントと LOADDEBUGDATA 指定の保存と復元を制御します。
SET コマンドを使用して各スイッチを設定します。SAVE BPS と SAVE MONITORS スイッチを使用して、あるデバッグ・セッションから次のデバッグ・セッションの間でブレークポイント指定とモニター指定を保存できるようになります。RESTORE BPS と RESTORE MONITORS スイッチは、後続のデバッグ・セッション開始時点でブレークポイント指定とモニター指定の復元を制御します。これらのスイッチを AUTO に設定すると、この情報の自動保存と復元が可能となります。また、これらの設定が後続のデバッグ・セッション開始時点で有効になるように、SAVE SETTING AUTO スイッチを使用可能にする必要があります。
CICS で実行する場合は、 次の要件について確認してください。
フルスクリーン・デバッグ・セッションに対する DTCN プロファイルをアクティブ化し、かつ、SAVE BPS、SAVE MONITORS、RESTORE BPS、および RESTORE MONITORS のすべてに NOAUTO を指定した場合、Debug Tool はそのセッションに対するブレークポイントと LOADDEBUGDATA 情報の大部分をそのプロファイルに保存します。DTCN プロファイルが削除されると、ブレークポイント情報と LOADDEBUGDATA 情報も削除されます。
CICS の下でのパフォーマンスの保存と復元の設定、ブレークポイント、およびモニターについては、マルチエンクレーブ環境でのパフォーマンスに関する考慮事項を参照してください。
ここで述べた内容に関して詳しくは、以下のトピックを参照してください。
CICS 環境で、Debug Tool を使用してプログラムをデバッグする場合には、以下の制約事項が適用されます。
CALL %CEBR コマンドを使用することにより、デバッグ・セッション中に CICS 一時ストレージおよび一時データ・キューにアクセスすることができます。 CICS 提供の CEBR トランザクション中に、現在実行できるすべての機能を実行することができます。 一般の CICS リソース (例えば、デバッグ中の CICS システムに関する情報、またはオープンおよび読み取り中の VSAM ファイルに関する情報) にアクセスする場合には、CALL %CECI コマンドを使用することができます。 このコマンドは、CICS 提供の CECI トランザクションに対する制御を与えます。 デバッグ・セッションに戻るには、CEBR または CECI の内部から PF3 を押します。 CEBR および CECI について詳しくは、「CICS Supplied Transactions」を参照してください。
DTST トランザクションを使用して、CICS ストレージを表示および変更することができます。詳しくは、付録F. DTST での CICS ストレージの表示および変更を参照してください。