4
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-06-26

はじめに

本記事では Visual Studio Code (以下 VSCode) を使った RPGIV から FFRPG へのコンバートについて、準備から方法、失敗例についてご紹介いたします!

1. VSCode での IBM i 接続

VSCode と IBM i を接続するためには以下の工程が必要になります。

  • 拡張機能のインストール
  • IBM i 接続設定情報の入力

1.1. 拡張機能のインストール

VSCode と IBM i を接続するための拡張機能をインストールしていきます。画面左のアクティビティーバーから拡張機能を選択 → 『IBM i Development Pack』を検索してインストールします。

image.png

1.2. IBM i への接続

IBM i Development Pack のインストールが完了後、IBM iの接続情報の設定を行います。ログイン設定画面で接続情報を入力します。

image.png

  • 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)

image.png

image.png

2. VSCode でのコンバート

2.1. コンバート使用ツール

IBM I Development Pack に含まれているため、新たにインストールを行う必要はありませんが、VSCodeでのコンバートに必要な拡張機能をご紹介します。

  • Code for IBM i
    image.png

  • RPGLE Free
    image.png

2.2. コンバートの方法

定位置記入方式の RPGIV のソースコードを実際にコンバートしてみます。
image.png

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

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

3. FFRPG ではサポートされていない命令文

RPGIV には存在するものの、FFRPG ではサポートされていない命令文がいくつかあります。これらの命令が含まれていると、FFRPG へのコンバート時に正しく変換されない可能性があります。ここでは変換が困難な代表的な命令と、それに対する対処法について紹介します。

3.1. パラメータリスト、キーリストについて

こちらのソースをコンバートしてみます。
image.png

パラメータリスト部分のソースが全て消えてしまいました。
image.png

対策としてコンバージョン前に FFRPG へ修正します。外部プログラムを呼び出す際にパラメータを複数指定しています。
image.png

3.2. GOTO文、MOVE文について

こちらのソースをコンバートしてみます。
image.png

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

次のように対策しましょう。

  • MOVE については=(演算子)で直接代入します
  • GOTO についてはIF文を利用します

image.png

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. 継続行のコンバート成功例

まずは継続行のコンバートが成功する事例についてご紹介します。
下記の画像のソースコードをコンバートしてみます。

画像1.png

正しくコンバートされました!

画像2.png

4.2. 継続行のコンバート失敗例①

次に継続行のコンバートが失敗するパターンの1例目をご紹介します。
成功したソースコードと比較して、継続行の行と行の間に空白行を挿入しています。

画像3.png

下記の画像がコンバートを実施した結果です。
継続行の行と行の間に空白行が含まれる場合に、コンバートが不完全な形でコードが生成されてしまいます。

画像4.png

4.3. 継続行のコンバート失敗例②

次に継続行のコンバートが失敗するパターンの2例目をご紹介します。
成功したソースコードと比較して、継続行の行と行の間にコメント行を挿入しています。

画像5.png

下記の画像がコンバートを実施した結果です。
継続行の行と行の間にコメント行が含まれる場合も、コンバートが不完全な形でコードが生成されてしまいます。

画像6.png

5. コンバート時の範囲選択による失敗

コンバートを行う際に今までの説明では「Ctrl + A」での全選択を行っていましたが、対象箇所を範囲選択しその中のみコンバートを行うこともできます。
しかし、その時に選択範囲を正常に選べていないとコンバートエラーとなってしまうため、ここではその説明をしたいと思います。

5.1. コンバート範囲選択漏れによるコンバートの失敗

選択範囲を失敗している例と正確に行えている例をそれぞれご紹介します。

選択範囲を失敗している例
範囲選択 失敗例 Gif .gif

範囲選択が正確に行えている例
範囲選択 成功例 Gif .gif

失敗例の場合、メイン処理内の「#END」が選択されておらずセミコロンの外側に記載されてしまっています。
一方で成功例の場合、メイン処理内の「END」は「EXR END;」のようにセミコロンの内側に記載されており、
正常に FFRPG へのコンバートが行われていることが分かります。

5.2. 原因

なぜコンバートにこのような違いが発生してしまうのかというと、原因は選択範囲の違いです。VSCode 内で RPGIV から FFRPG へのコンバートを行う際に、「Ctrl + A」での全選択の後「Convert to Free Format」を選択しコンバートを行っていたのですが、今回は全選択を行わずこちらで選択した範囲をコンバートするという方法で行いました。
その際に、対象の選択が1行の途中までとなってしまっていたため選択されていなかった「#END」がセミコロンの外側に表示されてしまいコンバートが正常にできなかったという事です。

5.3. RPGLE Free のアナウンス

正しい操作方法について今回インストールを行ったツール「RPGLE Free」の注意事項の欄に記載がありますのでそちらの紹介です。
image.png
こちらを訳すと、以下のように記載されています。

1.選択してハイライト表示を行い、右クリックをし「Convert to Free Fomat」を選択してください。注意点として

  1. ハイライト表示のされる選択は1行目から行う必要があり、選択していない行はコンバートされません
  2. ハイライト表示のされる選択はコンバートを行う最終行移行まで選択しなければなりません

2.F1キーを押して「Convert to Free Fomat」を押すとソースコード全体がコンバートされます。

つまり、選択した範囲が対象となるためコンバートを行いたい行は開始から終了まで全て選択してくださいと注意書きがされています。
選択範囲のみのコンバートはとても便利で、この部分だけコンバートしてFFRPGでの書き方を知りたいという事もあると思います。しかし、正確な範囲を選択できていないとコンバートエラーの温床となってしまうため気を付けて行うようにしてください。

さいごに

今回は VSCode を使用したコンバートの方法についてまとめました。VSCode でコンバートを行うことができれば、RPGIV で行っている基幹システムを FFRPG に移行する開発もエディタ内で完結し行いやすくなると思います。
まだ現状ではコンバートしたプログラムをそのまま使用するという事は一部難しい部分がありますが、開発支援としてはとても有用に使うことができると感じています。本機能を使用し様々な選択肢のある開発環境での開発が行えるようになることを願っています。


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


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