このトピックでは、CICS® プログラムのデバッグ中に実行できる作業と、いくつかの制限を説明します。
CICS の下でプログラムをデバッグするには、その前に、 以下の作業が完了していることを確認してください。
DESCRIBE CHANNEL コマンドを使用することにより、CICS チャネルの内容を表示でき、LIST CONTAINER コマンドを使用することにより、コンテナーの内容を表示できます。
「CICS Transaction Server for z/OS CICS アプリケーション・プログラミング・ガイド」の『拡張プログラム間データ転送: 現代の 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 のいずれであるか) および LoadMod::>CU フィールドで指定された名前 (DTCN の場合) またはプログラム・フィールドおよび/またはコンパイル単位フィールド(CADP の場合) がわかっていなければなりません。
DISABLE コマンドを使用して、Debug Tool がプログラムをデバッグしないようにするには、次の手順を実行します。
例えば、以下のような場合に、Debug Tool がプログラム ABD2 をデバッグしないようにするには、コマンド DISABLE CADP PROGRAM ABD2 を入力します。
例えば、以下の環境の場合、Debug Tool がコンパイル単位 STAR2 をデバッグしないようにするには、コマンド DISABLE DTCN CU 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 を使用してプログラムをデバッグする場合には、以下の制約事項が適用されます。
EQAOPTS LOGDSN コマンドで命名パターンが指定されている場合、Debug Tool は SET LOG ON fileid コマンドを実行してログ・ファイルを自動的に開始します。
CICS にログインしていないか、デフォルト・ユーザー ID でログインしている場合、Debug Tool は EQAOPTS LOGDSN コマンドを実行しません。このため、Debug Tool はログ・ファイルを自動的に開始しません。
CICS 領域には、ログ・ファイルに対する更新権限が必要です。
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 ストレージの表示および変更を参照してください。