はじめに
本記事では Visual Studio Code (以下 VSCode) を使った RPGIV から FFRPG へのコンバートについて、準備から方法、失敗例についてご紹介いたします!
1. VSCode での IBM i 接続
VSCode と IBM i を接続するためには以下の工程が必要になります。
- 拡張機能のインストール
- IBM i 接続設定情報の入力
1.1. 拡張機能のインストール
VSCode と IBM i を接続するための拡張機能をインストールしていきます。画面左のアクティビティーバーから拡張機能を選択 → 『IBM i Development Pack』を検索してインストールします。
1.2. IBM i への接続
IBM i Development Pack のインストールが完了後、IBM iの接続情報の設定を行います。ログイン設定画面で接続情報を入力します。
- Host or IP Address : 接続する区画の情報
- Port (SSH) : 22
- Username : IBM i ユーザーID
- Password : IBM i ユーザーパスワード
1.3. 接続でエラーが起きた場合
IBM i への接続が行えない場合の原因・確認点を一部紹介いたします。
- SSH接続のポート番号が22以外
- SSH接続は22ポートがデフォルトですが、接続環境によっては異なることもあるため確認が必要になります
- SSHサーバーの起動
- SSHサーバーが起動していることが前提でのIBM i接続情報の設定になります
- 以下のコマンドを実行し、SSHサーバーの起動を行ってください
STRTCPSVR SERVER(*SSHD)
2. VSCode でのコンバート
2.1. コンバート使用ツール
IBM I Development Pack に含まれているため、新たにインストールを行う必要はありませんが、VSCodeでのコンバートに必要な拡張機能をご紹介します。
2.2. コンバートの方法
定位置記入方式の RPGIV のソースコードを実際にコンバートしてみます。

記載したソースを Ctrl + A で全行選択した状態で右クリックし、
「Convert to Free Format」を選択します。

先程まで定位置記入方式の RPGIV で書かれていたソースが FFRPG での記載に変換されます。

3. FFRPG ではサポートされていない命令文
RPGIV には存在するものの、FFRPG ではサポートされていない命令文がいくつかあります。これらの命令が含まれていると、FFRPG へのコンバート時に正しく変換されない可能性があります。ここでは変換が困難な代表的な命令と、それに対する対処法について紹介します。
3.1. パラメータリスト、キーリストについて
対策としてコンバージョン前に FFRPG へ修正します。外部プログラムを呼び出す際にパラメータを複数指定しています。

3.2. GOTO文、MOVE文について
GOTO文、MOVE文は FFRPG で使用できないためコンバートに失敗してしまいます。

次のように対策しましょう。
- MOVE については=(演算子)で直接代入します
- GOTO についてはIF文を利用します
3.3. コンバージョンに失敗する命令一覧と代替方法
ご紹介したように、解決方法としてはあらかじめRPGIVのソースをFFRPGに修正する必要があります。よくあるコンバージョン失敗命令一覧をまとめましたので、ご参考にしていただけると幸いです!
| RPGIV | FFRPG |
|---|---|
| GOTO~TAG | IF/ELSE,SELECT,DO/ENDDO |
| EVAL | =(演算子) |
| QABEQ,CABL,CABG | IF A=B IF A<Bなど明示的にする。 |
| MOVE | FOR分を利用し、ループで一つずつ配列に入れる |
| MOVEA | FOR分を利用し、ループで一つずつ配列に入れる |
| TIME,DATE | %TIME(),%DATE() |
| KLIST | chain(キー① : キー② : キー③) ファイル名 ※キーの順番はファイル定義と同時にしてください。 |
4. 継続行のコンバート
ここでは継続行のコンバートについてまとめています。ここで言う継続行とは、文字列を複数行にわたって記述し、連結することを指しています。
4.1. 継続行のコンバート成功例
まずは継続行のコンバートが成功する事例についてご紹介します。
下記の画像のソースコードをコンバートしてみます。
正しくコンバートされました!
4.2. 継続行のコンバート失敗例①
次に継続行のコンバートが失敗するパターンの1例目をご紹介します。
成功したソースコードと比較して、継続行の行と行の間に空白行を挿入しています。
下記の画像がコンバートを実施した結果です。
継続行の行と行の間に空白行が含まれる場合に、コンバートが不完全な形でコードが生成されてしまいます。
4.3. 継続行のコンバート失敗例②
次に継続行のコンバートが失敗するパターンの2例目をご紹介します。
成功したソースコードと比較して、継続行の行と行の間にコメント行を挿入しています。
下記の画像がコンバートを実施した結果です。
継続行の行と行の間にコメント行が含まれる場合も、コンバートが不完全な形でコードが生成されてしまいます。
5. コンバート時の範囲選択による失敗
コンバートを行う際に今までの説明では「Ctrl + A」での全選択を行っていましたが、対象箇所を範囲選択しその中のみコンバートを行うこともできます。
しかし、その時に選択範囲を正常に選べていないとコンバートエラーとなってしまうため、ここではその説明をしたいと思います。
5.1. コンバート範囲選択漏れによるコンバートの失敗
選択範囲を失敗している例と正確に行えている例をそれぞれご紹介します。
失敗例の場合、メイン処理内の「#END」が選択されておらずセミコロンの外側に記載されてしまっています。
一方で成功例の場合、メイン処理内の「END」は「EXR END;」のようにセミコロンの内側に記載されており、
正常に FFRPG へのコンバートが行われていることが分かります。
5.2. 原因
なぜコンバートにこのような違いが発生してしまうのかというと、原因は選択範囲の違いです。VSCode 内で RPGIV から FFRPG へのコンバートを行う際に、「Ctrl + A」での全選択の後「Convert to Free Format」を選択しコンバートを行っていたのですが、今回は全選択を行わずこちらで選択した範囲をコンバートするという方法で行いました。
その際に、対象の選択が1行の途中までとなってしまっていたため選択されていなかった「#END」がセミコロンの外側に表示されてしまいコンバートが正常にできなかったという事です。
5.3. RPGLE Free のアナウンス
正しい操作方法について今回インストールを行ったツール「RPGLE Free」の注意事項の欄に記載がありますのでそちらの紹介です。

こちらを訳すと、以下のように記載されています。
1.選択してハイライト表示を行い、右クリックをし「Convert to Free Fomat」を選択してください。注意点として
- ハイライト表示のされる選択は1行目から行う必要があり、選択していない行はコンバートされません
- ハイライト表示のされる選択はコンバートを行う最終行移行まで選択しなければなりません
2.F1キーを押して「Convert to Free Fomat」を押すとソースコード全体がコンバートされます。
つまり、選択した範囲が対象となるためコンバートを行いたい行は開始から終了まで全て選択してくださいと注意書きがされています。
選択範囲のみのコンバートはとても便利で、この部分だけコンバートしてFFRPGでの書き方を知りたいという事もあると思います。しかし、正確な範囲を選択できていないとコンバートエラーの温床となってしまうため気を付けて行うようにしてください。
さいごに
今回は VSCode を使用したコンバートの方法についてまとめました。VSCode でコンバートを行うことができれば、RPGIV で行っている基幹システムを FFRPG に移行する開発もエディタ内で完結し行いやすくなると思います。
まだ現状ではコンバートしたプログラムをそのまま使用するという事は一部難しい部分がありますが、開発支援としてはとても有用に使うことができると感じています。本機能を使用し様々な選択肢のある開発環境での開発が行えるようになることを願っています。
当記事の著作権はIBMに帰属します。
詳細はこちらを参照ください。

















