RPG

471. 複数のプログラムを同時にデバッグするには

同時に複数のプログラムをデバッグしたい場合があるが
STRDBGコマンドで停止点を指定してもF12キーを押すと
元の画面に戻ってしまうだけでもう一方のプログラムの停止点を
指定することができない。
どうすれば複数のプログラムの停止点(=ブレーク・ポイント)を
同時に指定することができるのだろうか?
_

(1) 最初にSTRDBGコマンドで複数のプログラムのデバッグを
指定する。

[例]

                              デバッグ開始  (STRDBG)                       
                                                                           
  選択項目を入力して,実行キーを押してください。                           
                                                                           
  プログラム  . . . . . . . . . . > SELRCDCL       名前 , *NONE            
   ライブラリー  . . . . . . . . . . . >   V.PANEL      名前 , *LIBL, *CURLIB   
                 値の続きは+     > PNLFLDCL                               
                                  >   V.PANEL                              
  省略時のプログラム  . . . . . .   *PGM           名前 , *PGM, *NONE      
  最大 トレース・ステートメント 数  . . . . .   200            数値                    
  トレース・データ満杯時の処理      *STOPTRC      *STOPTRC, *WRAP          
  実動ファイルの更新  . . . . . . > *YES          *NO, *YES                
 OPM ソース・レベル・デバッグ   . > *YES          *NO, *YES                
  サービス・プログラム  . . . . .   *NONE          名前 , *NONE            
   ライブラリー  . . . . . . . . . . .                  名前 , *LIBL, *CURLIB   
                 値の続きは+                                              

[解説]

ここでは SELRCDCL と PNLFLDCL というふたつのプログラムの
デバッグを指定している。

(2) デバッグのモジュール・ソースが表示される

                           モジュール・ソースの表示                             
                                                                                
 PROGRAM:   SELRCDCL       LIBRARY:   V.PANEL                                   
      1               PGM        PARM(&RCVPRM)                                  
      2  /*-------------------------------------------------------------------* 
      3  /*   SELRCDCL  : SELFLD: フィールドの選択および順序付けを表示する    * 
      4  /*               VS : ATHDSPCL                                       * 
      5  /*   この CLP は WRKPNL のフィールドの選択でフィールド毎に           * 
      6  /*   呼び出されて実行されます。                                      * 
      7  /*   画面処理後のメッセージもここで出力します。                      * 
      8  /*   2020/01/16  作成                                                * 
      9  /*                                                                   * 
     10  /*   ラCOMPILEン                                                       * 
     11  /*   CRTBNDCL V.PANEL/SELRCDCL SRCFILE(R610SRC/QCLSRC)               * 
     12  /*     DFTACTGRP(*NO) ACTGRP(*NEW) AUT(*ALL) DBGVIEW(*SOURCE)        * 
     13  /*                                                                   * 
     14  /*     PNLFLDCL :  フィールドの選択および順序付け出口プログラム      * 
     15  /*     VIWCHK   :  複数ビューのチェック                              * 
                                                                       続く ... 
 デバッグ                                                                       
                                                                                
 F5= 最新表示      F9=コマンド 複写    F14=モジュール・リスト の処理   F15=ビュー の選択     
 F16= 検索の反復   F21=コマンド 入力   F22=ステップ・イン   F24=キー の続き                

[解説]

F14=モジュール・リストの表示を注目。F14キーを押すと次のように
複数のモジュールが表示される。

(3) モジュール・リストの表示

                           モジュール・リストの処理                            
                                                          システム :   Sxxxxxx
 オプションを入力して,実行キーを押してください。                              
   1= プログラムの追加   4= プログラムの除去   5= モジュール・ソースの表示     
   8= モジュール停止点の処理                                                   
                                                                               
 OPT     PROGRAM/MODULE     LIBRARY        TYPE                                
                            *LIBL          *PGM                                
          PNLFLDCL          V.PANEL        *PGM                                
          SELRCDCL          V.PANEL        *PGM         選択                   

[解説]

このようにモジュール・リストが表示されたら「5= モジュール・ソースの表示」を
選択するとソースが表示されて停止点を指定することができる。
または最初に停止点を指定した後でコマンド入力画面にF12キーで戻ったら

(4) モジュール・リストの表示

-

 DSPMODSRC

と打鍵して実行キーを押すと前述のモジュール・リストを表示することができる。

– 複数のプログラムを同時にデバッグする方法を覚えるとデバッグ効率は格段と
高くなる。
途中まであるプログラムのデバッグを続けていて必要なプレーク・ポイントに到達したら
そこからF14=モジュール・ソースの表示を行って別のプログラムのデバッグを開始するという
離れ業をやってのけることができる。
原因が不明な難解な問題の解決に複数のプログラムのデバッグ方法を知っておくと
解決の道が早まる。
_