RPG

72. ILE-RPG の対話式ソース・ディバッグ

ILE-RPG では対話式ソース・ディバッグを行うことができる。

これはViuslC++、VisualBASIC などのようにソースを表示しながらステップ・バイ・ステップで
ディバッグを行う方法である。
OPM-RPG (いわゆる RPGIII) の開発の時代に比べるとディバッグはかなり効率的なもの
となっている。その方法について紹介する。

1. コンパイルは「デバッグ用ビュー」を *SOURCE で予めコンパイルしておく

CRTRPGMODCRTBNDRPG には「デバッグ用ビュー」パラメータがあり、
省略値は *STMNT になっているが、これを *SOURCE に変更してコンパイルしておく。
例えば

CRTBNDRPG PGM(MYLIB/MYRPG)   SRCFILE(MYSRCLIB/QRPGLESRC) DBGVIEW(*SOURCE)

にしてコンパイルしておく。

2. デバッグ開始 (STRDBG) によってディバッグを開始する
 
STRDBG PGM(MYLIB/MYPGM) UPDPROD(*YES)

のようにして「実行ファイルの更新」パラメータ(UPDPROD)*YES に変更して
ディバッグを開始する。
すると、デバッグ用ビュー が *SOURCE に指定されているので次のように
RPGソースが表示される。

ここでディバッグ欄に例えば 「FIND 1200」 と打鍵して実行キーを押すとステートメント番号 1200 行から
表示が開始される。

最初に停止させたい位置を FIND XXXX によって探して停止点にカーソルを移動して
F6キーを押すと、そこが停止点として定義される。
これは OPM での ADDBKP と同じである。停止点でもう一度 F6キーを押すと
その停止点が除去される。(RMVBKP)
最初の停止点を決定したら F3キーを押して終了する。

3. プログラムの実行

CALL MYLIB/MYPGM でもよいかも知れないが何らかの呼び出しによってディバッグ対象の
プログラムを呼び出して実行する。
すると次のように最初の停止点でソースが表示される停止する。

F6 キー ・・・

新たな停止点の追加または除去

F10 キー ・・・

次のステートメントへ1行ずつステップ・バイ・ステップで実行する。

F11 キー ・・・

ソース上でのフィールドの名前にカーソルを合わせてF11を押すと
フィールドの値が表示される。
最下部のディバッグ行に EVAL (変数名) + 実行でもよい。

F12 キー ・・・

次の停止点まで実行が継続する。

その他にも機能は多くあるが、これだけ覚えれば処理は十分である。
対話式ソース・ディバッグがまだ未経験の方は是非試して頂きたい。
OPM(RPGIII) であっても CVTRPGSRC コマンドによって簡単にILE-RPG に移行できる
ので原因不明の障害に悩まされたときは、一時的にせよILE-RPG に移行してみて
対話式ディバッグを試してみるのも効果的である。