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