メニューボタン
IBM i お役立ち情報2025.05.28

RPG開発者のためのIBM i モダナイゼーション入門!
RDi とWeb APIで新しい開発の世界を楽しもう - 第 4 回 -

前回の振り返り

出村:「前回は、RDiの便利機能についてお話しました。前回の便利機能についてはいかがでしたか。」

松田:「個人的には、アウトライン表示やインデント表示が今後の開発でも頻繁に使えそうだなと感じました。渡邊さんはいかがでしたか?」

渡邊:「そうですね。私はなんといっても、アプリケーションダイアグラムですね。SEUと違って、図式化してくれるところは大きな魅力だと思います。」

出村:「今回はデバッグのお話をしたいと思います。RDiでのデバッグはとても便利なので、どんどん活用していきましょう。」

渡邊:「デバッグも便利なのですね。開発にはデバッグが付きものなので、楽しみです。」

松田:「エミュレータ画面だとどうしても1画面のサイズも決まっているので時によって見にくいこともありますよね。RDiではなんだかその悩みも解消されるような気がしますが....」

出村:「まさにそうです。コーディング同様に、RDi特有の広い画面を生かしてデバッグすることができます。では、早速始めましょう。」

デバッグ(ILE言語のみ)

出村:「RDiのデバッグにおいて、注意すべき点があります。それは、デバッグ機能が使える対象言語がILE言語のみである点です。」

松田:「ILE言語とは、つまりRPGⅣのことでしょうか。」

出村:「もちろん、RPGⅣも含まれますが、それだけではありません。ILE言語の中には、CL、COBOL、C/C++が含まれるんです。つまり、この中に含まれないRPGⅢについては残念ながらRDi上ではデバッグできません。ちなみに、お二人は普段デバッグする時はどのように実施していますか?」

松田:「コンパイル時にデバッグを行う準備をして、STRDBGでデバッグモードを起動しブレークポイントを設定して、プログラムをCALLしています。」

出村:「そうですね。エミュレータの場合だとその方法になりますね。RDiでのデバッグは、対話型の場合、エミュレータ画面でCALLを行いRDi上でデバッグを行いますが進め方の流れは同じですね。」

渡邊:「エミュレータ画面でCALLを行うのですね。ブレイクポイントはRDi側で設定するのですか?」

出村:「その通りです。RDi上にブレイクポイント設定の機能が備わっているのでそちらを使用します。早速始めましょう。デバッグ対象は、以前コンパイルしたBSYE010Rです。デバッグについては、下記の流れで進めます。まずは、IBM i デバッグ・サーバの起動を確認します。これは、エミュレータ画面からSTRDBGSVRを実行するのと同じです。」

<デバッグの流れ>

  1. IBM i デバッグ・サーバの起動
  2. RDiの設定
  3. サービス・エントリー・ポイントの設定
  4. ブレイクポイントの設定(事前に止めたいポイントで停止)
  5. プログラムを実行

  1. IBM i デバッグ・サーバの起動

    「リモート・システム・ビュー」の「オブジェクト」を右クリックし、「リモート・サーバー」→「デバッグ」を開いたときに、開始がグレーアウトし、中断のみクリックできる状態を確認。開始がクリックできる場合は、クリックして起動する。

    松田:「開始がグレーアウトしています。」

  2. RDiの設定

    出村:「はい。次に、デバッグを実行するプログラムで、ファイルを更新する場合は、設定を変更しておく必要があります。これは、最初に設定しておきましょう。エミュレータでSTRDBGを実行する時のオプション、UPDPROD(*YES)と同じです。デバッグする時に、プロダクション・ライブラリーに設定されているライブラリの中のデータベース・ファイルを更新・追加するために設定します。」

    RDiでは、「ウィンドウ」→「設定」→「実行/デバッグ」→「IBM i デバッグ」を選択し、右側ペインで「実働ファイルを更新する」にチェックを入れ、OKボタンを押します。

    渡邊:「BSYE010Rは、プロダクション・ライブラリーに入っている物理ファイルを更新するので必要ですね。ライブラリーの設定をCHGLIBでテスト・ライブラリーに変更するのも一つの方法ですか。」

    出村:「その通りですね。ただ、ライブラリの設定が変わってしまうので、先ほど紹介した設定で行う方が良いですよ。」

    渡邊:「なるほど。保護の観点からも無暗にCHGLIBで変えない方が良いということですね。」

  3. サービス・エントリー・ポイントの設定

    出村:「はい、その通りです。次にサービス・エントリー・ポイントを設定します。これは、冒頭にお話したRDiでのデバッグ対象プログラムの起動をRDiと関連付ける機能です。」

    該当するプログラムを右クリックして、、「デバッグまたはコード・カバレッジ(サービス・エントリー)」→「サービス・エントリー・ポイントの設定」を選択します。

    出村:「ちなみに、もう一つ要注意ポイントがあります。それは、ログインユーザーです。RDiのユーザーとエミュレータ側のユーザーが異なると、正しくデバッグができません。この後、エミュレータ側で実際のプログラムを呼び出す工程がありますが、サービス・エントリー・ポイントに設定されているユーザーとプログラム実行時のユーザーが一致している必要があります。」

    サービス・エントリー・ポイントが正しく設定されたことを示すメッセージが表示され、同時に、「IBM i サービス・エントリー・ポイント」ビューが表示されます。

    出村:「では、エミュレータでCALLしてみましょう。CALLを行うと、デバッグ・パースペクティブに切り替えるメッセージが出てきますので、切り替えを選択しましょう。」

    松田:「CALLします。RDiの画面が、デバッグ・パースペクティブに切り替わりました。でも、エミュレータ側はブレークポイントを設定してないのに進みませんね。」

    出村:「そうなんです。先ほど設定したサービス・エントリー・ポイントに達しているので、一時停止しています。デバッグ・パースペクティブ画面の説明ですが、左のビューは実行対象のプログラムについての情報、中央はソースファイル、右は変数の値が表示されます。CALLした時のパラメータは適用されていますか?」

    渡邊:「はい。CALL PGM(BD0465/BSYE010R) PARM(('S') ('SAUD')) でCALLしていましたが、変数のP@MODEとP@SHIRIに適用されていることがわかります。各変数の値が表示されるのですね。画面が広く見やすいです。」

    出村:「そうですね。では、ブレークポイントを設定してみましょう。停止したいステートメントに右クリックで「ブレークポイントの追加/削除から設定です。 今回はテストデバッグなので、わかりやすい243行目にセットしてください。この場所は、画面上でメニューを選ぶ場所で、ファンクションキーを押したときの動作を決めています。」

    松田:「はい。行番号の左に青い四角が出てきました。これがブレークポイントなのですね。ブレークポイントの設定は、CALL前でもCALLした後からでもできるのですね。」

    出村:「そうですね。では画面上部にて再開ボタンをクリックして、プログラムを再開して、ブレークポイントまで進めましょう。」

    渡邊:「再開しました。エミュレータ画面が進み、ブレークポイントで止まっています。」

    出村:「このプログラムでは照会モードで起動していますね。ではここで、F6を押して、登録画面に切り替えてみましょう。」

    松田:「F6を押しました。 」

    出村:「ソースプログラムで、F6に該当する標識*INKFにマウスポインタを当てましょう。値が1になっていて、F6を押したことがわかります。F5、F7、F8はどうですか?」

    渡邊:「すべて値が0ですね。正しい状態です。」

    出村:「右の変数ビューで値が代入されたところは黄色に変化します。値をダブルクリックすることで、変更することも可能ですよ。ここでは、値の変更まではおこないません。再開しF3を押してさらに再開し、終了しましょう。」

    渡邊:「242行目の、F3に該当する標識が1になりました。再開すると、プログラムの終了が出ました。」

    出村:「はい。こちらでデバッグ終了です。終えるときは、ブレークポイントを消して、デバッグ・パースペクティブを右クリックで閉じる、サービス・エントリー・ポイントを右クリックして、削除で終了です。」

    渡邊:「ちなみに、サービス・エントリー・ポイントを残しておくケースはあるんでしょうか。」

    出村:「はい、ありますよ。サービス・エントリー・ポイントを残す際には、有効→無効にしておくことが大切です。」

    松田:「サービス・エントリー・ポイント設定後にリモートモニター上で表示される有効を右クリックで無効に変更できました。」

    出村:「その状態のまま残しておけば、次回デバッグする際に有効に変更するだけで始められますよ。RDiでのデバッグ、いかがでしたか。」

    松田:「とてもデバッグしやすいです。エミュレーター画面では、プログラムの実行状況が見えるし、RDiの画面では、広い画面を使ってデバッグができます。」

    渡邊:「オープン系の開発者も抵抗なくデバッグできそうですね。」

    出村:「次はScreen Designerです。」

  4. ScreenDesigner

    出村:「Screen Designerは、ADTSのSDA(Screen Designer Aid)をGUI化したようなものです。EclipseベースのDDS表示装置ファイル作成ツールですね。」

    松田:「SDAはIBMのサポートが2025年4月30日で終了しましたね。IBMからも後継としてRDiが紹介されていましたね。」

    渡邊:「私はSDAの設計画面(画面エディタ)はなかなか慣れなくて、DDSソースで作っていました。」

    出村:「確かに設計画面は慣れが必要ですね。熟練の方ですと、SDAのほうが手早く作れるとおっしゃる方もいますよ。RDiのScreen DesignerにはSDAには無かった機能もありますよ、早速始めてみましょう。デバッグで使っていた、ソースメンバーBSYE010Rの中で使っている画面ソースファイル:BSYE010D.dspfを右クリックして、アプリケーションから開く、Screen Designerを起動しましょう。」

    渡邊:「また違うビューが表示されましたね。」

    出村:「そうです。画面中央には設計ビュー、右にはパレットビュー、左下にアウトラインが表示されます。ちなみに、こちらで設計自体を行わなくてもプレビューとしてのみの使用でも問題ないです。SDAのメリットは、現在作成中の内容が逐一反映されるので、自分の操作でどんな画面が出来上がっていくのか可視化された状態で理解ができます。」

    • 設計ビュー

      出村:「まず、設計ビューです。レコードやフィールドを設計し、確認する画面です。設計ビューをダブルクリックすると大きくなります。レコード様式をD2FMTに切り替えましょう。その様式に合わせた画面イメージが表示されます。」

      松田:「画面イメージを手早く確認できますね。使い勝手もよさそうです。」

      出村:「次に、社員名を右クリックして、プロパティーを開くとプロパティービューが表示されます。このビューがフィールドレベルのキーワードに該当し、基本、参照、属性、色、標識、キーワード、テンプレートのタブで、それぞれ詳細を指定できます。」

      渡邊:「これは便利ですね!。わかりやすく変更できますね。」

      出村:「右上のRestoreにより元の画面に戻しましょう。プロパティは、設計ビューを最大化しなくても、下部に表示され、使用することができますよ。次にアウトラインです。」

    • アウトライン

      出村:「アウトラインは、レコードやフィールドの定義を確認できます。レコード様式でD2FMT、社員名の横のフィールドをクリックすると、アウトラインでは、D2SYAINMが反転し、クリックすると、詳細が表示されます。アウトラインから、様式を切り替えることも可能です。」

      松田:「設計ビューのフィールド上で何も固定情報がないところをクリックするとどうなるのですか。」

      出村:「その場合、先ほどまで表示されていたプロパティービューはレコード様式に切り替わります。」

      上記の状態から下記に変わります。

      渡邊:「空白の行と固定行において画面上で別の画面に切り替わるのは面白いですね。」

    • パレット

      出村:「パレットは、レコードやフィールドの追加を行う場合に、画面イメージ上にドラッグ&ドロップするため追加したいものを選択する際に選択肢が並んでいる箱のことです。」

      松田:「この機能があれば、一から画面を設計せずとも要素を埋め込めば実現したい画面に近づきますね!!」

      出村:「例えば、定数の日付定数を画面イメージ上にドラッグアンドドロップすれば、YY/MM/DDが配置されますよ。」

    • 画面の設計

      出村:「これまで紹介した機能を使ってSDAで画面設計が可能です。画面設計は、1からの作成でも既存の画面のアップデートでもどちらでも可能です。」

      渡邊:「流れとしては、設計ビューの方で画面の設計を選択して進めていくのですね。」

      松田:「既存の画面をも編集できるのであれば、更新部分が明確なケースだとかなり早く開発ができますね~!」

      出村:「はい。ソースビューでソースを書いて、設計画面で確認することも可能ですよ。」

    • 帳票版ReportDesigner

      出村:「SDA以外にも、Screen Desighnerの帳票版としてReportDesignerが存在します。こちらは、帳票作成に特化しているので登場シーンは限られますが、同じように画面設計できるので便利です。」

      松田:「帳票こそ、レコードの位置が非常に重要になってくるので、正直なところ私はRDiでの作成のほうが性に合っていると感じました。」

      渡邊:「一旦は、エミュレータで作成して、RDiで改めて編集していくという方針もありですよね。色々な選択肢が選べていいですね!」

    その他

    • PDM機能

      出村:「実は、RDiでPDM機能が使えるということを知っていますか。」

      渡邊:「もしかして、オプションなどの番号がそのまま使えるということですか?!」

      出村:「その通りです。もともとPDMで慣れている方が多い現状かと思うので、こういった機能は便利ですし、RDiの併用もより前向きに検討いただける要素ですよね。実際の機能をご紹介しましょう。PDMパースペクティブを開き、オブジェクトテーブルでライブラリー、ファイルを指定したうえでフィルターをかけたうえで画面を表示すると、オプションが表示されます。」

      松田:「表示されました!試しに今表示していないメンバー:BSYE010R2に対して5番で実行すると無事に表示されました!また、この状態で編集しようとしても編集できませんね。参照モードになっていることがわかります。」

      出村:「そうです。SEUだとオプション欄にRQなど入れてQUERYを使用することもありますが、そういった機能も同様に使えるんですよ。」

      渡邊:「それなら、既存PDMに慣れている人も使いやすいですね~!!」

    次回予告

    出村:「今回で、RDiは終了となります。ここまで4回分ご紹介しましたが、改めて基本機能から便利な機能まで幅広いですよね。」

    松田:「RPGLEなどはすっかりコーディングはRDiで実施する癖がつきましたね。」

    渡邊:「次号は、いよいよWeb APIになるのですね。楽しみです!!」

    出村:「はい。複数回にわたってIBM i のWeb API機能についてご紹介していきます。次回もよろしくお願いします。」

    次号へつづく


    出村 宏志
    ベル・データ株式会社 アプリケーションビジネス本部DX推進部

    1995年ベル・データ㈱に入社
    1999年より約15年ほどIBM i のインフラエンジニアを経験し、その後アプリケーション開発に従事。キャンプで焚火をしながらボーっとするのが最近の楽しみです。

    渡邊 隆
    ベル・データ株式会社 アプリケーションビジネス本部DX推進部

    ネットワーク、オープン、セキュリティ、DX関連のプリセールス、構築、サポートを経て、現在はDX推進部に所属。工場DXソリューションを担当しながら、初挑戦のIBM i に格闘中。休日は、クラッシックピアノの練習や仲間との弾き合い会を楽しんでいます。

    松田 三奈
    ベル・データ株式会社 アプリケーションビジネス本部DX推進部

    新卒よりインフラエンジニアとしてPowerサーバーのリプレイスに従事し、現在はDX推進部に所属。休日は、カフェ巡りや旅行など天候に関わらず外に出てアクティブに活動することが好きです。

    あわせて読みたい記事

PAGE TOP