2
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?

VSCodeでFFRPGのデバッグをしてみる

Last updated at Posted at 2025-10-16

はじめに

本記事では Visual Studio Code (以下 VSCode)でRPGの開発を行うことができる拡張機能 Code for IBM i を使用した FFRPG プログラムのデバッグについて、失敗例を含めご紹介いたします!

1. デバッグ

RPG のデバッグと聞いた時に、多くの RPG 開発者が想像するのは以下のような5250画面でのデバッグではないでしょうか。

STRDBG を実行、ソースを表示

image.png

ブレークポイントを設定し、デバッグを実行

image.png

今回はこの RPG 開発者が親しみ深いであろう従来の5250画面から見た目を大きく変えた、GUi ベースの統合開発環境である VSCode の拡張機能 Code for IBM i を使用し RPG プログラムのデバッグを行っていきます。
2つの画面を並べ比較をしてみると、文字の表示桁数や画面内の情報の量など様々な部分に違いがあります。

image.png デバッグ 画面.png

また、同一画面でのデバッグ中のプログラムと変数の値の監視など、5250画面では簡単に行えなかったことをVSCode では行うことが出来ます。しかし 2025年10月現在、実行可能なデバッグの対象が画面の無い非対話型プログラムのみであるなど制限される部分もあります。
次章からは開発作業の幅を広げられる Code for IBM i を使用した RPG プログラムのデバッグを、接続方法から説明いたします!

2. VSCode でのデバッグ準備

2.1. VSCode での IBM i デバッグ

VSCode での IBM i のデバッグには以下の工程が必要になります。

  • VSCode と IBM i の接続
  • コンパイルの実行環境の設定
  • IBM i Debug の設定

2.1.1. VSCodeと IBM i の接続

VSCode と IBM i の接続方法についてはこちらの記事に記載しております!

2.1.2.コンパイルの実行環境の設定

コンパイルの実行環境の設定はこちらの記事を参考にいたしました!

2.1.3. IBM i Debugの設定

続いて IBM i Debug の各設定についてご説明します。
画面左のデバッガーマークを押下し、Debug ServerDebug Service を起動します。

image.png

  • Debug Server の起動

画像右側の を押下します。

image.png

以下のメッセージが画面右下に表示されます。

Debug server started.

image.png

Debug Server の起動が完了しました:sparkles:

  • Debug Service の起動

画面右側の を押下します。

image.png

このまま Enter を押下します。

image.png

Debug Serviceの表示の横に マークがつきます。

image.png

Debug Service の起動も完了しました:sparkles:
これで VSCode での IBM i デバッグの準備は完了です!!

2.2.デバッグ実行

VSCode での IBM i デバッグの実行に必要な工程は以下になります。

  • IFS 上にソースをアップロード
  • ソースをコンパイル
  • デバッガー起動

2.2.1.IFS 上にソースをアップロード

以下の手順で IFS 上にソースをアップロードします。

ファイルを追加したフォルダを選択し、右クリック
メニューから New File を押下します。

image.png

VSCode 画面の上部でファイル名を設定し、Enter を押下します。
これで空の RPGLE ファイルが作成されます。

image.png

空のファイルにソースを記載します。

image.png

デバッグ用の RPG プログラムの完成です!!

2.2.2.ソースをコンパイル

先程、作成したファイルをコンパイルします。
コンパイルの手順はこちらの記事を参考にいたしました!

2.2.3.デバッガー起動

コンパイルが完了したらデバッグを実行します。

OBJECT BROWSER 内の先程コンパイルしたソースを選択し、右クリック
メニューからStart Debugging > Debug as Batchを選択します。

image.png

VSCode 画面上部に表示されたコマンドを確認し、このまま Enter 押下で実行します。

image.png

デバッグ実行画面が開かれました:sparkles:

image.png

これで VSCode で RPG プログラムのデバッグを実行することが出来ます!!


デバッグは下記の方法で進めることが出来ます。

  • 画面左側クリックでブレークポイントの指定

image.png

  • 画面上部のボタンまたは F11 押下でステップイン

image.png

これらの内容をもとにデバッグの検証を行います!

3.注意点

VSCode で IBM i のデバッグ設定の準備をする際の注意点は以下の2点になります。

  • IBM i の PTF と IBM i Debug のバージョンの違いによるエラー
  • Code for IBM i と IBM i Debug のバージョンの違いによるエラー

3.1. IBM i の PTF と IBM i Debug のバージョンの違いによるエラー

IBM i Debug でデバッグを行うためには、接続を行う IBM i に対象の PTF が当たっている必要があります。
対象の PTF はこちらのサイトを参照してください。

3.2. Code for IBM i と IBM i Debug のバージョンの違いによるエラー

前述の通り、IBM i Debug のバージョンにより必要な PTF が異なります。

3.1.の対応策として PTF に合わせ IBM i Debug のバージョンを落とすことも考えられます。その際に確認していただきたい点が Code for IBM i のバージョンです。
Code for IBM i のバージョンを、設定した IBM i Debug のバージョンが最新であったタイミングに合わせる必要があります。
IBM i Debug は ver1.0.0 に対し、Code for IBM i は最新のままのような状態にしておくと、以下の画像のように Debug Server が表示されないなど正常な動作が行われず VSCode でのデバッグを行うことができなくなってしまいます。

image.png

VSCode での IBM i のデバッグ設定時の注意点は以上になります。

4.検証

4.1.変数

1つ目は変数を使用した簡単な計算プログラムです。
5つのパラメータの合計を変数に代入して平均値を求めます。
今回のプログラムでは平均が50以上の場合に合格、それ以下の場合には不合格としたい想定ですが、想定通りの結果にならないためデバックを行い原因を調べてみます。

デバックしたいソースを右クリックし Start Debugging → Debug as Batch を選択します。
パラメーターを指定してデバックを実行します。

CALL PGM(ライブラリ名/DEBUGTST) PARM(X'030F' X'070F' X'050F' X'060F' X'040F')

image.png

ステップインで1行実行しました。
左側に変数の中身が表示されています。

image.png

40行目までデバックを進めました。
38行目の計算結果が変数keiに入っています。
この行で平均値を計算し合格か不合格かをセットします。
もう1行デバックを進めます。

image.png

43行目のelseの条件に入りました。
40行目の条件はkei/5>50なので50は含まれずelseの条件に入ってしまう事が分かりました。

image.png

40行目のソースを修正してもう一度デバックを実行します。
if (kei)/5>=50; と修正しました。
40行目までデバックを進めます。

image.png

もう1行デバックを進めます。
42行目の条件に入ってくれました

image.png

4.2.アベンド

2つ目は配列を使用し格納されている値を表示するプログラムです。
1~5の番号がついているリストに対し、初期値として0番を指定しているためアベンドをしています。

デバックしたいソースを右クリックし Start Debugging → Debug as Batch を選択します。
このままデバッグを実行します。

CALL PGM(ライブラリ名/対象のプログラム名)

デバッグ アベンド1.png

画面上部の続行ボタンか F5 を押下しデバッグを実行させます。

デバッグ アベンド2.png

今回のプログラムでは16行目にて配列の参照対象を入れる変数 'index' に0を入れているのですが、使用している配列の番号は1~5となっているため、21行目でアベンドしてしまいました。

デバッグ アベンド3.png

この時、Code for IBM i ではアベンドした際も画面が落ちることなく変数の値やアベンドした行を確認することができます。

次に 'index' に1~5の値を入れれば正常に動作するかを確認するため、ブレークポイントを作成し 'index' の中の値を変更していきます。
再度、デバックしたいソースを右クリックし Start Debugging → Debug as Batch を選択します。
同様にこのままデバッグを実行します。

デバッグ アベンド1.png

デバッグの画面が出てきたら、動作を止めたい行の行番号の横をダブルクリックしブレークポイントを設置します。
行番号の横に赤い点がついたらブレークポイントの設置完了です。

デバッグ アベンド5.png

今回は18行目にブレークポイントを設置し、'index' の中の値を変更したいと思います。
先程のデバッグと同様に画面上部の続行ボタンか F5 を押し動作を開始します。
ブレークポイントで動作が止まったことを確認しました。画面左上の変数というタブで現在の各変数の値の確認や書き換えができます。
今回は 'index' の値を書き換えます。「INDEX = 0」をダブルクリックし編集可能に変更し、0を1に書き換えます。

デバッグ アベンド6.png

続行ボタンを押し、再度動作を行うとアベンドせず正常に動作を完了しました。
アベンドしていた21行目を実行した際に 'index' の変数内に配列のナンバーとして正常な1~5の中の数値が入っていたため、今回はアベンドせずに実行が完了しました。

このように VSCode ではアベンドしていたプログラムの変数の中身を確認・変更、デバッグの実行で検証作業を行うことが出来ます。

5. RDi と Code for IBM i でのデバッグの比較

RPG の開発環境として、今回取り上げている VSCode の他に RDi (IBM Rational Developer for i)があります。RDi でも RPG プログラムのデバッグは可能なため、本章では RDi と VSCode でのデバッグ動作の比較をします。

RDi と VSCode のデバッグを比較

RDi

デバッグ RDi.gif

VSCode

Adobe Express - 新しいタブ - Awesome Screenshot - Awesome Screenshot.gif

RDi と VSCode では今回のようにバッチ処理のプログラムをデバッグした際には大きな違いはありません。どちらも簡単にライブラリ内のプログラムからデバッグを起動することができ、ブレークポイントの設定や変数内の値の確認も行うことができます。
ここまでですと RDi と VSCode で大きな違いは見えませんが、 この2つの開発環境で異なる点はいくつか存在します。

デバッグでの違いの一部が以下になります。

RDi と VSCode の違い

RDi Code for IBM i
Screen Designer 対応 非対応
ライセンス 有償 無償
統合開発環境のふれやすさ 基本 RPG 開発での使用 他言語の開発でも使用可能

メリット面では、 RDi は画面ありのプログラムのデバッグ、VSCode (Code for IBM i)は無償での使用が可能となっております。デバッグの機能としては RDi の方が優れていますが、VSCode でもバッチなど非対話型のプログラムのデバッグは可能です。
また VSCode の利点は他言語の開発経験がある人の触れやすさのため、今後の Code for IBM i の機能拡張次第で開発のメインとして VSCcode を使用することも可能になってくるのではないでしょうか。

おわりに

VSCode 、5250、RDi を使用してそれぞれデバックを行ってみました。
5250 でのデバックは普段使用されている方が多く馴染み深い方も多いかと思います。
半面、5250に慣れていない方からするとデバックのコマンドを覚えたり変数の見方など慣れるまでに時間を要してしまい少しとっつきにくい部分もあるかと思います。
RDi では対話型のプログラムをデバックすることができ、 VSCode 同様変数の中身をみることができたり、日本語対応もされています。
しかし無償期間は90日までとなっておりそれ以降は有償となってしまいます。
今回デバックに使用したプログラムは容易にバグが見つかるようなものでしたが、プログラムが複雑になるほどバグの特定は難しくなるため、VSCode でのデバックも選択肢の1つになると思います。
また、5250に慣れていない方でもとっつきやすいなどのメリットもあります。
VSCode ではまだ対話型のプログラムのデバックは非対応ではありますが、頻繁にバージョンが更新されているため、これからに期待したいと思います。


当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。

2
0
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
2
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?