Rational Developer for System z バージョン 7.6

CICS プログラムのデバッグ

このトピックでは、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 コマンドでのパターン・マッチ・ブレークポイントの制御

ここでは、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 がプログラムをデバッグしないようにするには、以下のステップを実行します。

  1. どのプログラムを使用不可にしたのかを思い出せない場合は、コマンド LIST DTCN または LIST CADP を入力します。このコマンドは、既に使用不可にしてあるプログラムをリストします。このステップにより、既に使用不可にしてあるプログラムまたはコンパイル単位の名前を思い出すことができます。
  2. CADP プロファイルを使用して稼働している場合は、コマンド DISABLE CADP PROGRAM program_name CU compile_unit_name を入力します。 program_name は、「Program」フィールドに指定したプログラム名のパターンに一致し、ユーザーがデバッグしたくないと考えているプログラムを示します。compile_unit_name は、「Compile Unit」フィールドに指定したコンパイル単位名のパターンに一致し、ユーザーがデバッグしたくないと考えているコンパイル単位を示します。プログラムかコンパイル単位、またはその両方を指定できます。

    例えば、以下のような場合に、Debug Tool がプログラム ABD2 をデバッグしないようにするには、コマンド DISABLE CADP PROGRAM ABD2 を入力します。

  3. DTCN プロファイルを使用して稼働している場合は、コマンド DISABLE DTCN PROGRAM program_name を入力します。ここで、program_name は、「Program Id(s)」フィールドに指定したプログラム名のパターンに一致し、ユーザーがデバッグしたくないと考えているプログラムを示します。

    例えば、以下のような場合に、Debug Tool がプログラム STAR2 をデバッグしないようにするには、コマンド DISABLE DTCN PROGRAM STAR2 を入力します。

ENABLE コマンドを使用して、前に使用不可にしたプログラムのデバッグを許可するには、以下のステップを実行します。

  1. 使用不可にしたプログラムまたはコンパイル単位の正確な名前を思い出せない場合は、コマンド LIST DTCN または LIST CADP を入力します。このコマンドは、使用不可にしたプログラムをリストします。 デバッグしたいプログラムかコンパイル単位、またはその両方の名前を書き留めてください。
  2. CADP プロファイルを使用して稼働している場合は、コマンド ENABLE CADP PROGRAM program_name CU compile_unit_name を入力します。ここで、program_name および compile_unit_name は、それぞれ、ステップ 1 で書き留めたプログラム名およびコンパイル単位名です。 プログラム名だけを指定すればよい場合は、コマンドの CU compile_unit_name の部分を入力する必要はありません。コンパイル単位名だけを指定すればよい場合は、コマンドの PROGRAM program_name の部分を入力する必要はありません。
  3. DTCN プロファイルを使用して稼働している場合は、コマンド ENABLE DTCN PROGRAM program_name を入力します。ここで、program_name はステップ 1 で書き留めたプログラムの名前です。

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

Debug Tool が EXEC CICS RETURN で停止するのを防ぐ方法

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 は、さまざまなタイプの記憶保護違反を検出できます。「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 プログラム・デバッグ時設定の保存

疑似会話型 CICS プログラムのデバッグ中に Debug Tool の表示設定 (カラー設定など) を 設定した場合、Debug Tool がデフォルト設定を復元する可能性があります。 プログラムが Debug Tool を再始動するたびに変更が引き続き有効になるようにするには、 優先ファイルまたはコマンド・ファイルに表示設定を保管してください。

CICS プログラム用のブレークポイントおよびモニター指定の保存と復元

以下のどの指定を 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 でのデバッグ時の制約事項

CICS 環境で、Debug Tool を使用してプログラムをデバッグする場合には、以下の制約事項が適用されます。

デバッグ・セッション中の CICS リソースのアクセス

CALL %CEBR コマンドを使用することにより、デバッグ・セッション中に CICS 一時ストレージおよび一時データ・キューにアクセスすることができます。 CICS 提供の CEBR トランザクション中に、現在実行できるすべての機能を実行することができます。 一般の CICS リソース (例えば、デバッグ中の CICS システムに関する情報、またはオープンおよび読み取り中の VSAM ファイルに関する情報) にアクセスする場合には、CALL %CECI コマンドを使用することができます。 このコマンドは、CICS 提供の CECI トランザクションに対する制御を与えます。 デバッグ・セッションに戻るには、CEBR または CECI の内部から PF3 を押します。 CEBR および CECI について詳しくは、「CICS Supplied Transactions」を参照してください。

デバッグ・セッションの前または後での CICS ストレージへのアクセス

DTST トランザクションを使用して、CICS ストレージを表示および変更することができます。詳しくは、付録F. DTST での CICS ストレージの表示および変更を参照してください。


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

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