RPG開発者のためのIBM i モダナイゼーション入門!
RDi とWeb APIで新しい開発の世界を楽しもう - 第 3 回 -
RDiの便利機能
出村:「前回は、Rational Developer for i(以下RDi)の基本機能として、ソース編集からコンパイルまでのお話をしました。今回はRDiの便利機能についてお話したいと思います。」
渡邊:「RDiにはSEUと同じように使えて、更に便利な機能もありましたが、他にもあるのですね、ワクワクしますね。」
出村:「そうですね。GUI画面ならではの機能も豊富なので、新しく学ぶ方にはぜひ沢山の機能を覚えて頂きたいですね。」
フィルタリング
出村:「前回は、ライブラリーフィルターのお話をしましたが、オブジェクトフィルターもあります。例えば、ライブラリーを指定して、オブジェクトタイプを*FILE、オブジェクト属性をPF-SRCにすると、ソースファイルだけのフィルタができますよ。」
松田:「開発する時は、ライブラリーフィルターよりも、素早くソースファイルにたどり着けますね!」
出村:「開発する人のスタイルに合わせて、選ぶことができますよ。必要な項目を指定して作成すると、ライブラリーフィルター同様に画面左部にフィルターが作成されます。」



アウトライン表示(RPGⅢ利用不可)
出村:「次は、アウトラインです。これはとても便利な機能です。RPGⅣのソースメンバーを開くと、右上に表示されます。もし、表示されない場合は、右上のメニューがリモートシステム・エクスプローラーになっているか確認してください。」
渡邊:「アウトライン表示は、RDi特有の機能ですよね!特に開発者にとっては、複雑なプログラムになればなるほどこの機能のありがたみを感じられると思います。」

松田:「色々な項目がありますね。この情報はいつ収集されるのですか?」
出村:「ソースメンバーを開いた時にスキャンされるし、ソースを修正している時も随時更新されていきますよ。更新されないときは、更新ボタンで更新してください。画面上部のメニューバーからソース>アウトライン・ビューの更新で更新できますよ。」

松田:「都度、更新もできて常に新しい情報なのが良いですね!」
出村:「まずは、ファイルです。これは、このソースが使用しているファイルの一覧が表示されます。ライブラリー・リストをふまえて確認するから、どこのライブラリーにあるかも表示されるし、さらには、どこで使用されているかもわかります。ここでは、UNLOCKされている行が出ているので、クリックすれば、該当するソースの行に移動しますよ。」
渡邊:「これは便利ですね。他の人が作ったソースを見る時に役立ちそうですね。今回は、実際に参照しているDBのフィールドを例に挙げて、アウトライン表示の中身を詳しく見ていきましょう!!」
~ ファイル画面 ~
- ソースメンバー「
BD0465/BELLSRC(BSYE010R)
」を例に見てみます。 - 該当ファイルをクリックして配下を確認すると、このファイルが参照されている箇所が特定できます。
- このファイルの様式名「BDSYAINR」をクリックし、実際に参照されている箇所を見ると、F仕様書で該当ファイルが宣言されていることが分かります。
ファイルの様式名「BDSYAINR」の左の>を展開すると、このファイルから引用された変数が表示されます。「SYAINM」を開くと、372行目で利用されていることがわかるので、クリックするとソース内で参照したい行を確認します。(画像はアウトライン表示の画面です。)
次にアウトラインの画面より、「979」と番号がついている箇所をクリックします。
エディタ画面を見ると、行番号が979(シーケンス番号974)に対応していることがわかります。
続いて、番号「1057」をクリックします。
すると、先ほどまで表示されていたシーケンス番号:974 から次に選択したソース行のシーケンス番号:1052に移ったことがわかります。
~ データ構造 ~
出村:「次にデータ構造です。このプログラムで使用しているデータ構造が分かりますよ。」
松田:「データ構造もファイル画面同様に桁数等をわかりやすく表示してくれますね。」

~ フィールド ~
出村:「次に、フィールド、標識、キーリスト、パラメーター・リストです。フィールドを例に紹介しますが、フィールドは変数の遷移を表示してくれます。例えば、SYSYAINMについては、2つの行で利用されていて、別の2つの行では(M)が付いており、値が代入されていることを示しています。」
- こちらでは、D1SYAIBNにP3SYAIBNが代入されている状況
一方、次の1086行目に進むと、P3SYAIBNにC1SYAIBNを代入した状態であり、変数自体の値が変わっていることがわかる。
このように変数の値が変わっている箇所に対しては(M)がついている。

渡邊:「ちなみに、この>はなんでしょうか?」
出村:「>が無いものは、このプログラムで使用されていないことを示しています。変数として定義はされているけれど、このプログラム内では参照・代入・変更はされていないということです。」
渡邊:「なるほど、分かりやすいですね。開発中に使えますね。」
~ サブルーチン ~
出村:「アウトライン表示でこれまで紹介した機能は、標識、キーリスト、パラメータ・リストでも同様に使えます。次にサブルーチンです。サブルーチンは、サブルーチン名をクリックすると、ソースの該当行に、下の数字はサブルーチンを呼び出す行に移動することができます。」

松田:「開発する時にサポートしてくれる機能が満載ですね。」
出村:「はい。まだまだあります。次はインデントとハイパーリンクです。」
インデント表示とハイパーリンク
~ インデント表示 ~
出村:「インデント表示には大きく分けて2つの方法があります。インデント表示とブロックネスト表示の2つです。違いについても詳しく見ていきましょう。」
<インデント表示>
松田:「画面をみていたらインデント表示という項目をみつけましたが、こちらでしょうか。」

出村:「そうです。インデント表示については、画面下部の情報エリアに改めてソース内容とブロックが表示されます。」

<ブロックネストの表示>
出村:「ブロックネストの表示は、IF文やDO文を分かりやすく表示してくれる機能です。例えばIF文にカーソルを合わせて、Shift+Ctrl+Oを押すと、ELSEの位置を含めて分かりやすく矢印で表示してくれますよ。」

渡邊:「とても見やすいですね。RPGではIF文に名前を付けることができず、複数重なっているとどこからどこまでが1ブロックなのかわかりにくかったので、ブロックネストの表示があるとコーディングミスを減らせますね。」
~ ハイパーリンク ~
出村:「ハイパーリンクはフィールドの付加情報を表示してくれるのみならず、該当項目へ移動してくれる機能です。例えば、サブルーチンを呼び出す所で、Ctrlキーを押しながらサブルーチン名にカーソルをあてると、サブルーチンの付加情報として直前のコメント行が表示され、さらにクリックするとサブルーチンに移動します。移動後はalt + →、alt + ←で呼び出し行とサブルーチンをいったり来たりできますよ。」

松田:「コメント行を意識して記述すれば価値が上がりますね。この機能は、アプリ開発をする際には使えそうですね。サブルーチンの呼び出し行とサブルーチンが離れている場合、便利ですね。」
出村:「そうですね。この機能は地味なんですが、開発効率が高まりますね。」
コード補完
出村:「コード補完は命令文や演算項目を補完してくれる機能で、命令文の頭の文字はわかるけど、思い出せないと言ったシチュエーションで使えます。例えば、C仕様書で命令文の桁位置で、Ctrl+Spaceを押すと、命令文が出てきます。ここで、Zと入れると、Z-ADDや、Z-SUBが出てきて、簡単な説明が出ます。Z-ADDをクリックすると、ソースに記入され、さらにどんなパラメータが必要か教えてくれます。」


~ コード補完 Zを表示した所 ~
渡邊:「これは便利ですね、MOVEを使いたいけど、MOVEかMOVELかMOVEAかわからない時などにとても助かります。」
松田:「もっと詳しく知りたければ、前回ご紹介したF1で調べればよいですね。」
ソース比較
出村:「次はソースの比較です。お二人はエミュレーターでソースの比較をしたことありますか。」
松田:「はい、PDMにて該当のソースメンバーに対してOPT:54で実行していますが、正直とても見づらくて何か改善できないものかと悩んでいました。」
~ ソース比較の結果画面 ~
出村:「そう、5250エミュレーター画面上では見やすいとは言い難いですよね。RDiでは見やすく、操作も簡単です。リモートシステムビューで、ソースメンバーをCtrlキーで選択して、右クリックして、比較>相互です。」


渡邊:「とても見やすいですね。エミュレーターとは比較にならないですね。」
松田:「確か比較した内容をマージする機能もあるんですよね。」
出村:「そうです。差異のある部分にて右から左へ、もしくは左から右へのマージを選択することができます。ただし、この操作はソース内容を変更してしまうことにつながるので、慎重にお願いします。誤った操作をしてしまったら編集>元に戻すで戻れます。」

リファクタリング
出村:「次はリファクタリングです。本来の言葉の意味は、ソフトウェアの動作を変えずに、内部構造を改善するということです。RDiではリファクタリングの1つの機能として変数の名前の変更機能があります。エミュレーターではどのように行いますか?」
渡邊:「SEUを開いて、上部メニューで、C(変更前の名前)(変更後の名前)ALLでした。正直な所、とても怖くて、Fで確認してからやったことがありますが、実施後、本当にあっているか自信がなかったです。」

出村:「そう、SEUだと文字列の検索・置換なので、とても注意が必要です。本来あまり積極的にやりたくないのが一般的です。RDiだと安全にできますよ。」
渡邊:「それは助かりますね。具体的にはどのように行うのですか?」
出村:「変更したい変数 TEST にカーソルを合わせて、右クリックして、リファクタリング>名前変更です。そうすると、RDIが解析を行って、変更後の名前 TEST5を入れて、Previewをクリック、具体的な変更箇所の数が出ますので、Continueをクリックすると、具体的な変更箇所を示してくれます。」


松田:「分かりやすいですね。まとめて、変更箇所を見ることができますね。」
出村:「そうです。ここでOKを押すとソースに反映されます。もちろん、編集メニューの元に戻すをクリックすれば元に戻せます。」
渡邊:「これは、安心しておこなえますね。」
出村:「今回の例では、TESTをTEST5に変えましたが、このソースのようにTEST2という変数があったら、SEUでやってしまうと、TEST2はTEST52になってしまう。とても危険なので、注意が必要です。RDiではソースの内容を解析して行っているから、TEST2は対象になっていないんです。」

松田:「確かにそうですね。RDiの機能を使用したほうが、安全・安心です。」
アプリケーションダイアグラム
出村:「アプリケーションダイアグラムは、プログラムの構造を図式化してくれる機能です。ソースメンバーを右クリックして、『アプリケーションダイアグラムの視覚化』をクリックしましょう。」
~ アプリケーションダイアグラム ~

渡邊:「うわー!プログラムが可視化されましたね。これは凄いですね。」
出村:「枠の中がこのプログラムを示している。例えば、サブルーチンをクリックしてみて下さい。」
松田:「サブルーチンの呼び出す方向が分かりますね。枠の外は、外部プログラムですか?」
出村:「そうです。どのサブルーチンが呼んでいるか明確に分かりますね。自分で開発しているプログラムの見直しや、他の人が開発したプログラムを解析するときに便利です。サブルーチンをダブルクリックすれば、該当ソースの場所に移動できますよ。」
渡邊:「この機能はSEUには無いですね。私のようにIBM i の開発を始めたばかりの人にとって、開発の助けになりますね。」
RPGⅢのソースでRDiを使う
出村:「今回の内容はRPGⅢでは利用できない機能が多く出てきましたね。」
松田:「せっかく便利なのに残念ですね。何か対応方法はないのでしょうか。」
出村:「対応策とは言えないけれど、RPGⅢのソースをRPGⅣにコンバートしてRDiで見る方法がありますね。参照用としてRPGⅣのソースを作っておきます。実際のお客様でも、だんだんとRPGⅢからRPGⅣに移行したいと考えていて、この方法をご案内したら、参照用から始めてみると、おっしゃっていましたよ。」
渡邊:「具体的にはどのような方法なのですか?。RPGⅢとRPGⅣを学習していますが、仕様書が異なっていたり、変数の宣言の仕方が違ったりと違いがありますよね。」
出村:「エミュレーターでCVTRPGSRCという命令文で変換できますよ。」
※詳細な手順は下記のPDF資料を参照下さい。
CVTRPGSRC 手順書
松田:「これでRPGⅢのソースも、RPGⅣへの変換で容易にRDiで活用できますね。」
出村:「はい。徐々にRPGⅣに慣れていくことは、モダナイゼーションを進める上でも大事ですね。」
No | おすすめ | 機能 | 機能の概要 | RPG3 SEU (固定フォーマット) |
RPG3 RDi (固定フォーマット) |
RPG4 SEU (固定フォーマット) |
RPG4 RDi (固定フォーマット) |
FF-RPG |
---|---|---|---|---|---|---|---|---|
1 | ◎ | アウトライン | 変数やサブルーチンを表示し 利用箇所に飛べる |
× | × | × | ○ | ○ |
2 | ○ | コード補完 | 命令に合わせて 入力補助をしてくれる |
× | × | × | ○ | ○ |
3 | ○ | ソース分割・比較 | 比較したいソースを合わせて表示し 不一致が解る |
△ | ○ | △ | ○ | ○ |
4 | ◎ | リファクタリング | 変数やサブルーチンの名前を 安全に変更できる |
× | × | × | ○ | ○ |
5 | ○ | インデントの表示 | IF-END、DOなどの構造を 解りやすく表示 |
× | ○ | × | ○ | ○ |
6 | ○ | アプリケーション ダイアグラムの視覚化 |
サブルーチンの遷移を ダイアグラムで表示 |
× | × | × | ○ | ○ |
次回予告
出村:「今回はソース編集の便利機能をメインにお話しました。次回はデバックを中心にご紹介したいと思います。」
松田:「いよいよデバッグですね。楽しみです。」
出村:「とても効率的に行えますよ。そのほか、SDAの代替機能などを解説します。RDiを使って、開発してゆきましょう。」
渡邊:「RDiなら、開発時間も短縮できそう。次回もよろしくお願いします。」
次号へつづく

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

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

松田 三奈
ベル・データ株式会社 アプリケーションビジネス本部DX推進部
新卒よりインフラエンジニアとしてPowerサーバーのリプレイスに従事し、現在はDX推進部に所属。休日は、カフェ巡りや旅行など天候に関わらず外に出てアクティブに活動することが好きです。
あわせて読みたい記事

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

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

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