3
0

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 3 years have passed since last update.

IBM i (旧AS400)の自己学習メモ RPG Ⅳプログラミング編06 デバッグチートシート

Posted at

自己学習メモインデックス

IBM i (旧AS400)の自己学習メモ インデックス

概要

ここではRPG Ⅳプログラミングを進めていく上で使うことになってくるSTRDBGでのラインデバッグ機能について、使い方やコマンドなどをまとめています。
随時更新していこうと思いますが、まずは現段階で自分が使った(理解した)ものだけまとめていこうと思います。

デバッグチートシート

RPGプログラムのラインデバッグ開始方法

ラインデバッグを行うための準備

ラインデバッグを行うためには、RPGソースをコンパイルする際のオプションDBGVIEW*SOURCEを指定してコンパイルしておく必要があります。
(実際には*LISTを指定して行うこともあるみたいですが、よくわかってないのでここでは割愛)

  1. コンパイル対象のソースコードのOPTに14と入力しF4キーを押下
  2. F10キーを押下して追加パラメータを表示
  3. Page DownでDebugging views . . . . . . . . DBGVIEWのパラメータ指定の画面を表示し、*SOURCEと入力
  4. Enterキーを何度か押してRPGプログラムをコンパイル

AS400-1.gif

STRDBGコマンドを実行してブレークポイントを設定

以下のコマンドを実行してデバッグを開始する。

  • PGM
    • ライブラリ/RPGソースを指定
  • UPDPROD
    • デフォルトは*NO
    • このパラメータは、ジョブがデバッグ・モードになっている時に、プロダクション・ライブラリー中のデータベース・ファイルをレコードの更新または新しいレコードの追加のためにオープンできるかどうか指定する。
      https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_74/cl/strdbg.htm#STRDBG.UPDPROD
    • *YESを指定すると、ファイルを更新・追加のためにオープン可能となります。
STRDBG
STRDBG PGM(YAMAGUCHI1/RPG91) UPDPROD(*YES) 

上記コマンドを実行した後、Display Module Sourceの画面が表示されます。
ここでブレークポイントを設定します。
ブレークポイントは、以下2つの方法で指定出来ます。

  • 対象の行にカーソルを合わせてF6キーを押下
  • Debug . . . の入力エリアにbreak {行番号}を入力してEnter

ブレークポイントを設定したらF3キーでDisplay Module Source画面を閉じます。

AS400-1.gif

対象のRPGプログラムを実行

call rpg91

プログラムを実行すると、ブレークポイントを設定した行番号のところで処理が止まって、Display Module Source画面が表示された状態となります。
この画面の状態になれば、ようやくデバッグスタートです。

スクリーンショット 2020-05-06 19.08.55.png

デバッグモードを終了

STRDBGコマンドを実行すると、ジョブがデバッグモードになるようです。
この状態で、もう一回STRDBGコマンドを実行するとエラーとなります。

一度デバッグモードにしたら、ENDDBGコマンドを実行してデバッグモードを終了する必要があります。

1ステップ次の行に処理を移す

F10キーを押下すると処理が1ステップ次に進む。

AS400-1.gif

次のブレークポイントまで一気に処理を進める

F12キーを押下すると、処理が次のブレークポイントまで一気に進みます。
F10キーは1ステップですが、まとめて一気に実行したい場合に使います。

変数の中身を確認

  • 対象の変数にカーソルを合わせてF11キーを押下
  • eval {変数名}
スクリーンショット 2020-05-06 19.14.50.png 構造体の変数の場合、その構造体の中身も全部確認できるようです。 スクリーンショット 2020-05-06 19.15.54.png

変数の値を変更

  • eval {変数名} = {値}

変数の属性(データ型,サイズ)の確認

  • attr {変数名}
attr i
スクリーンショット 2020-05-07 6.36.56.png

特定の条件に一致したときにブレークポイントが動作して処理が止まるようにする

例えば、 iが1から10までのFOR文があったとして、 i=5のときにブレークポイントが動作して処理が止まるようにしたい。といった場合など。

break {行番号} when i = 5

条件指定でブレークポイントを設定した後は、F12キーを押下して処理を一気に進める。

OPTION(*NODEBUGIO)

入出力仕様書に停止点を生成するか指定するオプションで、*NODEBUGIOとすることで入出力仕様書に停止点を生成しない。
RPG Ⅳから使えるようになった指定のようで、デフォルトは*DEBUGIO

指定方法としては

  • RPGのH仕様書にH OPTION(*NODEBUGIO)と定義する
  • CRTBNDRPGコマンドのオプションで*NODEBUGIOを指定する
3
0
2

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?