1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ILERPGAdvent Calendar 2022

Day 19

強化されたデバッグ・オプション

Last updated at Posted at 2022-12-18

プログラマとしては負けている様で、デバッガーには頼りたくないと常日頃思っていますが、それでも使う機会はあるもので、そんなRPGのデバッガーが V7R5(V7R3 +PTF以上) で強化された模様。
追加されたオプションが ①DEBUG(*CONSTANTS)②DEBUG(*RETVAL)

  • ①DEBUG(*CONSTANTS) はデバッグ中に名前付き定数の中身が参照出来る
  • ②DEBUG(*RETVAL)はプロシージャの戻り値が参照できる。上書き出来る

個人的に①は「出来てなかったんだー」と思うくらいで、「D仕様書」を見れば判るからと言えばそうだが、いちいちソースを移動する手間を考えるとそれはそれで便利。
②は以前から「出来ない事が不便だと」思っていました。戻り値を変数で受けて、DUMP したりする事を考えるとコレは便利!

以下、使用例

QII0190R
H DFTACTGRP(*NO) ACTGRP(*NEW)
H*- *CONSTANTS …定数ををデバッグ時参照する
H*- *RETVAL    …プロシージャの戻り値を「 _QRNU_RETVAL 」で表示/変更する
H DEBUG(*CONSTANTS : *RETVAL)
D*- ---<< 変数定義    >>-----*
D MSG             S             40A
C*- ***************************************************************
C*- *  メインロジック                                            **
C*- ***************************************************************
C                   EVAL       MSG        = SUBPROC1()
C     MSG           DSPLY
C*
C                   SETON                                        LR
C                   RETURN
P*- ***************************************************************
P*- *  サブプロシージャ                                          **
P*- ***************************************************************
P SUBPROC1        B
D SUBPROC1        PI            40A
D*
D*- ---<< 定数定義    >>-----*
D C#STR           C                         ' 名前付き定数 '
D*- ---<< 変数定義    >>-----*
D RET             S             40A
C*
C                   EVAL      RET         = ' 【変更前】 '
C                                         + C#STR
C*
C                   RETURN                  RET
C*
P                 E

デバッグする場合は、コンパイル時のオプションに DEBGVIEW(*ALL) 等を付与して下さい。

定数の参照

まず、上記PGMの実行結果は DSPLY命令で「**【変更前】名前付き定数 **」と表示されます。2022-12-02_150955.png

次に STRDBG でデバッグを開始して、適当な停止点で 名前付き定数 を「F11」で参照すると中身を確認することが出来ます。
2022-12-02_151413.png

戻り値の参照及び変更

更に、プロシージャの最終地点に停止点を追加します。すると戻り値を返却する直前で停止し、特殊変数
_QRNU_RETVAL」を介して、プロシージャの戻り値を確認することが出来ます。

2022-12-02_151825.png

この特殊変数「_QRNU_RETVAL」をEVALで値変更すると、プロシージャの戻り値が変更されます。

2022-12-02_151930.png

2022-12-02_152110.png

プロシージャの戻り値が見られるのは便利なのですが、この特殊変数名「_QRNU_RETVAL」は絶対に忘れそうなので、IMEにでも登録しておきましょう!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?