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もデバッグすることができる。
スッキリされた読者も多いのではないかと思う。