CL

147. CLPもSTRDBGでソース・デバッグするには


CLPを対話式でソース・デバッグするにはあの

STRISDB(=Start Interactive Source Debug)という

名前を覚えにくいし操作も扱いにくいソース・デバッガーを使わなければ
ならなかったのだがこの忌まわしいSTRISDBを使わなくても
済む方法を紹介しよう。
このテクニックは非常に役に立つはずである。

それはあらかじめCLPを *SRCDBG オプションを指定してコンパイルしておくことである。

[例] ソース・デバッグを可能にするCLPのコンパイル

CRTCLPGM PGM(MYLIB/RUNPRTPGMC) SRCFILE(R610SRC/QCLSRC) OPTION(*SRCDBG)
   ALWRTVSRC(*NO) AUT(*ALL)    

[解説]

例のように ALWRTVSRC(*NO) (=RTVCLSRC 可能)を *NO に指定しておいても
STRDBGコマンドでソースを見ながら対話式でデバッグすることができるようになる。

[STRDBGによるソース・デバッグの例]

STRDBG PGM(MYLIB/RUNPRTPGMC) UPDPROD(*YES) OPMSRC(*YES)

[解説]

STRDBG では OPMSRC(=OPM ソース・レベル・デバッグ )を必ず *YES に指定してデバッグを
開発すること。

[結果のデバッグの様子]

                           モジュール・ソースの表示                             
                                                                                
 PROGRAM:   RUNPRTPGMC     LIBRARY:   SPOOLWTR                                  
      1               PGM        PARM(&PGMOBJLIB &FILEFILLIB &EDIT &PARMS +     
      2                            &OUTQQLIB &OUTPUT &OPTION)                   
      3  /*-------------------------------------------------------------------* 
      4  /*   RUNPRTPGMC :  印刷プログラムの実行                              * 
      5  /*                                                                   * 
      6  /*   2021/03/22  作成                                                * 
      7  /*-------------------------------------------------------------------* 
      8               DCL        VAR(&PGMOBJLIB) TYPE(*CHAR) LEN(20)            
      9               DCL        VAR(&PGM) TYPE(*CHAR) LEN(10)                  
     10               DCL        VAR(&OBJLIB) TYPE(*CHAR) LEN(10)               
     11               DCL        VAR(&FILEFILLIB) TYPE(*CHAR) LEN(32)           
     12               DCL        VAR(&FILE) TYPE(*CHAR) LEN(10)                 
     13               DCL        VAR(&TOFILE) TYPE(*CHAR) LEN(10)               
     14               DCL        VAR(&TOFILLIB) TYPE(*CHAR) LEN(10)             
     15               DCL        VAR(&EDIT) TYPE(*CHAR) LEN(4)                  
                                                                       続く ... 
 デバッグ                                                                       
                                                                                
 F3= 終了 プログラム   F6= 停止点の追加/消去   F10=ステップ        F11= 変数の表示   
 F12= 再開          F17= ウォッチ変数   F18= ウォッチの処理   F24=キー の続き     

[解説]

これであの忌まわしい STRISDBともお別れである。
いつものSTRDBGコマンドによってCLPもデバッグすることができる。
スッキリされた読者も多いのではないかと思う。