Rational Developer for System z バージョン 7.6

フルスクリーン・モードでの非言語環境プログラムの COBOL プログラムのデバッグ

非言語環境プログラムの COBOL に関する基本的なデバッグ・タスクの説明では、下記のプログラムを参照します。

例: デバッグ用のサンプルの非言語環境プログラムの COBOL プログラム

本書の内容を読み進むときに注意すべきことは、言語環境プログラムのライブラリーを 使用してプログラムをリンクおよび実行したとしても、OS/VS COBOL プログラムは非言語環境プログラムのプログラムであるということです。

NOTEST コンパイラー・オプションを使用してコンパイルし、非言語環境プログラムのライブラリーとリンクした VS COBOL II プログラムは、非言語環境プログラムのプログラムです。TEST コンパイラー・オプションを使用してコンパイルし、言語環境プログラムのライブラリーとリンクした VS COBOL II プログラムは、言語環境プログラムのプログラムです。

非言語環境プログラムの COBOL に固有の情報が提供されている場合を除き、Debug Tool の始動方法と非言語環境プログラムの COBOL プログラムのデバッグ方法については、非言語環境プログラムのプログラムに関する情報を参照してください。

例: デバッグ用のサンプルの非言語環境プログラムの COBOL プログラム

下記のプログラムは、デバッグ・タスクを示すために各種のトピックで取り上げられます。これは、非言語環境プログラムの COBOL プログラムの見本として使用される OS/VS COBOL プログラムです。

このサンプル・プログラムを実行するには、以下のステップを行います。

  1. 非言語環境プログラムの COBOL プログラムの準備に説明がある、サンプル・プログラムを準備します。
  2. このプログラムのデバッグ情報が、yourid.EQALANGX データ・セット の COB03O および COB03AO メンバーにあることを確認します。
  3. 言語環境プログラムの外部で始動されるプログラムに対する Debug Tool の始動 で説明されている方法で、Debug Tool を開始します。
  4. このプログラムのデバッグ情報をロードするために、以下のコマンドを入力します。
    LDD (COB03O,COB03AO) ;

このプログラムは、別の OS/VS COBOL プログラム (COB03A0) を呼び出す OS/VS COBOL プログラム (COB03O) の小さな例です。

ロード・モジュール: COB03O

COB03O

      ******************************************************            
      *  PROGRAM NAME: COB03O                              *            
      *                                                    *            
      *  COMPILED WITH IBM OS/VS COBOL COMPILER            *            
      ******************************************************            
                                                                        
       IDENTIFICATION DIVISION.                                         
       PROGRAM-ID. COB03O.                                              
      ******************************************************************
      *                                                                *
      * LICENSED MATERIALS - PROPERTY OF IBM                           *
      *                                                                *
      * 5655-P14: Debug Tool for z/OS                                  *
      * (C) Copyright IBM Corp. 2005 All Rights Reserved               *
      *                                                                *
      * US GOVERNMENT USERS RESTRICTED RIGHTS - USE, DUPLICATION OR    *
      * DISCLOSURE RESTRICTED BY GSA ADP SCHEDULE CONTRACT WITH IBM    *
      * CORP.                                                          *
      *                                                                *
      *                                                                *
      ******************************************************************
       ENVIRONMENT DIVISION.                                            
       DATA DIVISION.                                                   
       WORKING-STORAGE SECTION.                                         
                                                                        
       01  LOAN          PIC 999999.                                    
       01  INTEREST-RATE PIC 99V99.                                     
       01  INTEREST-DUE  PIC 999999.                                    
       01  INTEREST-SAVE PIC 999999.                                    
       01  INTEREST-AFTER-MULTIPLY PIC 999999.                          
       01  INTEREST-AFTER-DIVIDE PIC 999999.                            
                                                                        
      * DATE THAT WILL RECEIVE INCREMENTED JULIAN-DATE                  
       01  INC-DATE            PIC 9(7).                                
      * LOOP COUNT TO INCREMENT DATE 1000 TIMES *                       
       01  LOOPCOUNT           PIC   9999.                              
                                                                        
      * JULIAN DATE                                               
       01  JULIAN-DATE         PIC 9(7).                          
       01  J-DATE REDEFINES JULIAN-DATE.                          
           05 J-YEAR           PIC 9(4).                          
           05 J-DAY            PIC 9(3).                          
      * SAVE DATE                                                 
       01  SAVE-DATE           PIC 9(7).                          
                                                                        
       PROCEDURE DIVISION.                                        
                                                                  
       PROG.                                                      
           ACCEPT JULIAN-DATE FROM DAY                            
           DISPLAY 'JULIAN DATE: ' JULIAN-DATE                    
           MOVE JULIAN-DATE TO SAVE-DATE                          
                                                                  
           MOVE 10000    TO LOAN                                  
                                                                  
           CALL 'COB03AO' USING LOAN INTEREST-DUE.                
                                                                  
           DISPLAY 'LOAN: ' LOAN                                  
           DISPLAY 'INTEREST-DUE: ' INTEREST-DUE                  
                                                                  
           STOP RUN.                                              

COB03AO

      ******************************************************            
      *  PROGRAM NAME: COB03AO                             *            
      *                                                    *            
      *  COMPILED WITH IBM OS/VS COBOL COMPILER            *            
      ******************************************************            
                                                                        
       IDENTIFICATION DIVISION.                                         
       PROGRAM-ID. COB03AO.                                             
      ******************************************************************
      *                                                                *
      * LICENSED MATERIALS - PROPERTY OF IBM                           *
      *                                                                *
      * 5655-P14: Debug Tool for z/OS                                  *
      * (C) Copyright IBM Corp. 2005 All Rights Reserved               *
      *                                                                *
      * US GOVERNMENT USERS RESTRICTED RIGHTS - USE, DUPLICATION OR    *
      * DISCLOSURE RESTRICTED BY GSA ADP SCHEDULE CONTRACT WITH IBM    *
      * CORP.                                                          *
      *                                                                *
      *                                                                *
      ******************************************************************
       ENVIRONMENT DIVISION.                                            
       DATA DIVISION.                                                   
       WORKING-STORAGE SECTION.                                         
       77  INTEREST-RATE PIC 99V99 VALUE 0.22.                          
       LINKAGE SECTION.                                                 
       01  USING-LIST.                                                  
           02 LOANAMT   PIC 999999.                                     
           02 INTEREST  PIC 999999.                                     
                                                                        
                                                                        
       PROCEDURE DIVISION USING USING-LIST.                             
                                                                        
       PROG.                                                            
           COMPUTE INTEREST = LOANAMT * INTEREST-RATE.                  
           DISPLAY 'INTEREST-RATE: ' INTEREST-RATE.                     
                                                                        
           GOBACK.                                                       

コンパイル単位の非言語環境プログラムの COBOL としての定義とデバッグ情報のロード

非言語環境プログラムの COBOL プログラムをデバッグするには、事前にコンパイル単位 (CU) を非言語環境プログラムの COBOL CU として定義し、CU のデバッグ・データをロードしておく必要があります。これは、逆アセンブリー CU として現在 Debug Tool に認識されている CU、または現在 Debug Tool に認識されていない CU に対してのみ実行することができます。

LOADDEBUGDATA コマンド (短縮形は LDD) を使用して、逆アセンブリー CU を非言語環境プログラムの COBOL CU として定義し、この CU のデバッグ・データをロードさせます。LDD コマンドを呼び出す場合、単一の CU 名を指定するか、または括弧で囲んだ CU 名のリストを指定することができます。指定されるそれぞれの名前は、以下のいずれかでなければなりません。

CU 名が現在 Debug Tool に認識されている場合、その CU は即時に非言語環境プログラムの COBOL CU としてマークされ、以下のようにして、そのデバッグ・データのロードが試みられます。

LDD コマンドに指定した CU 名が現在 Debug Tool に認識されていない場合、 メッセージが出され、その名前の CU が認識される (現れる) まで、LDD コマンドは据え置かれます。 その時点で CU が自動的に非言語環境プログラムの COBOL CU として作成され、デフォルト・データ・セット名または現行の SET DEFAULT LISTINGS 指定を使用して、デバッグ・データのロードが試みられます。

CU に対して LDD コマンドを入力した後は、CU を逆アセンブリー CU として表示できません。

LDD コマンドを入力した後 Debug Tool が関連のデバッグ・データを見つけられない場合、その CU は逆アセンブリー CU ではなく、非言語環境プログラムの COBOL CU です。この CU に対してもう一度 LDD コマンドを入力することはできません。 ただし、SET DEFAULT LISTING コマンドまたは SET SOURCE コマンドを入力して、 関連のデバッグ・データを別のデータ・セットからロードすることができます。

別のロード・モジュールのコンパイル単位を非言語環境プログラムの COBOL として定義する方法

LDD コマンドを使用して、CU を非言語環境プログラムの COBOL CU として識別する必要があります。その CU が、LDD コマンドを入力したときにまだロードされていないロード・モジュール の一部である場合、Debug Tool は、CU が検出されなかったこと、および LDD コマンドの実行が据え置かれたことを示すメッセージを表示します。 後でその CU が逆アセンブリー CU として現れると、LDD コマンド は、その時点で実行されます。

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

ある特定の非言語環境プログラムの COBOL プログラムが呼び出されたときの停止

例: デバッグ用のサンプルの非言語環境プログラムの COBOL プログラム

COB03AO ルーチンが呼び出された後で停止するには、次のコマンドを入力します。

AT ENTRY COB03AO ;

AT CALL コマンドは、非言語環境プログラムの COBOL ルーチンではサポートされません。 非言語環境プログラムの COBOL ルーチンが呼び出されたときに Debug Tool を停止するのに、AT CALL コマンドを使用しないでください。

非言語環境プログラム COBOL プログラムが停止したステートメントの特定

プログラム内に多くのブレークポイントを設定しており、プログラムのどこで停止したか を知りたい場合には、以下のコマンドを入力することができます。

QUERY LOCATION

Debug Tool ログ・ウィンドウには、次のようなメッセージが表示されます。

QUERY LOCATION 
You are executing commands in the ENTRY COB03O ::> COB03AO breakpoint.
The program is currently entering block COB03O ::> COB03AO.

非言語環境プログラムの COBOL 変数またはストレージの値の表示および変更

単一の変数の内容を表示するには、ソース・ウィンドウ内の変数名の存在箇所にカーソルを移動させ、PF4(LIST) を押します。値はログ・ウィンドウに表示されます。これは、コマンド行に LIST variable コマンドを入力するのと同等です。

例えば、COB03O プログラムを CALL ステートメントまで 実行するには、Debug Tool コマンド行に AT 56 ; GO ; と入力します。カーソルを LOAN の上に移動し、PF4 (LIST) を押します。Debug Tool は、ログ・ウィンドウに次のメッセージを表示します。

LIST ( 'LOAN ')
LOAN = 10000 

LOAN の値を 100 に変更するには、コマンド行に 'LOAN' = '100' と入力して、Enter を押します。

変数 LOAN の属性を表示するには、次のコマンドを入力します。

DESCRIBE ATTRIBUTES LOAN

Debug Tool は、ログ・ウィンドウに次のメッセージを表示します。

ATTRIBUTES for LOAN 
   Its address is 0002E500 and its length is 6
   LOAN PIC 999999 

COB03AO の呼び出しに入るには、PF2 (STEP) を押します。

条件が真である場合に限った非言語環境プログラムの COBOL の行での停止

ユーザー・プログラムの特定の部分が、最初の数千回は 正常に機能しますが、ある条件のもとでは失敗するということが よくあります。行のブレークポイントの設定では、GO コマンドを繰り返し入力する必要があるため非効率的です。

例: デバッグ用のサンプルの非言語環境プログラムの COBOL プログラム

COB03AO プログラムで LOANAMT 変数が 100 に設定されている場合に Debug Tool を停止するには、 次のコマンドを入力します。

AT 36 DO; IF 'LOANAMT ^= 100' THEN GO; END;

行 36 は、COMPUTE INTEREST = LOANAMT * INTEREST-RATE. の行になります。 このコマンドにより、Debug Tool は行 36 で停止します。LOANAMT の値が 100 でない場合、プログラムは続行します。このコマンド により、Debug Tool は、LOANAMT の値が 100 の場合にのみ行 36 で停止します。

一部についてのみデバッグ情報を入手できる場合の非言語環境プログラムの COBOL のデバッグ

例: デバッグ用のサンプルの非言語環境プログラムの COBOL プログラム

COB03AO プログラムへの入り口点にブレークポイントを設定しようとしていて、 デバッグ情報が COB03AO については入手できるが COB03O については入手できないとします。こうした状況で、Debug Tool は空のソース・ウィンドウを表示します。 Debug Tool に認識されるコンパイル単位のリストを表示するには、以下のコマンドを入力します。

SET ASSEMBLER ON 
LIST NAMES CUS 

LIST NAMES CUS コマンドは、Debug Tool が認識しているすべてのコンパイル単位のリストを表示します。COB03AO が後からアプリケーションによりフェッチされる場合、Debug Tool に認識されていないことがあります。下のコマンドを入力します。

LDD COB03AO
AT ENTRY COB03AO
GO

非言語環境プログラムの COBOL プログラムのトレースバックの取得

プログラミング・エラーの検討中に、どのような順序の呼び出しがそのプログラミング・エラーを もたらしたのかを把握したいことがよくあります。この順序は、トレースバック、 または呼び出し元のトレースバックと呼ばれます。 トレースバック情報を取得するには、次のコマンドを入力します。

LIST CALLS

例: デバッグ用のサンプルの非言語環境プログラムの COBOL プログラム

例えば、以下のコマンドを使用して例を実行すると、ログ・ウィンドウには、 呼び出し側のトレースバックが表示されます。

LDD (COB03O,COB03AO) ;
AT ENTRY COB03AO ;
GO ;
LIST CALLS ;

ログ・ウィンドウには、次のような情報が表示されます。

At ENTRY in non-LE COBOL program COB03O ::> COB03AO.
From LINE 74 in non-LE COBOL program COB03O ::> COB03O.

非言語環境プログラムの COBOL における予期しないストレージ上書きエラーの検出

プログラムの実行中に、あるストレージが予期せずにその値を変更し、いつ、どこでこのようなことが生じたかを調べたい場合があります。 非言語環境プログラムの COBOL プログラムのトレースバックの取得に説明されている例で、LOAN が予期せずに変更されたことを プログラムで検出するものとします。 LOAN の値の変更を監視するブレークポイントを設定するには、 以下のコマンドを入力します。

AT CHANGE 'LOAN';

プログラムの実行中に LOAN の値が変わると、Debug Tool は停止します。


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

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