【VS Code】RPGⅣからFFRPGにConvertしてみた！

# はじめに
そもそもCovertってなにから始まる人もいるかと思います。
Convertとは「コンピュータのデータやプログラムを他のデータ形式に変換すること」の意味を持ちます。<br>

今回は、VSCodeを利用して、RPGⅣからFreeFormRPGの言語仕様に変換してみます！

# 使用ツール / 拡張機能
・無償版IBM環境の[PUB400](https://www.pub400.com/)を利用
・[Visual studio code](https://code.visualstudio.com/)
・Code For IBMi      (インストールの手順記載あり)
・RPGLE Free         (インストールの手順記載あり)

:::note info
今回、使用するツール「Code For IBMi」「RPGLE Free」は、
"IBM i Development Pack"に含まれているので、こちらをインストールしても問題ありません。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/32cf03da-4374-6eb4-2a95-7d539fceca65.png)

# 事前セットアップ
### VS Codeの導入
こちらのサイトを参考にしてください！

### VS CodeへCode for IBMiをインストール
マーケットプレイスで"Code for IBM i"を検索。[インストール]をクリックして拡張機能をインストールします。

![スクリーンショット 2024-10-01 19.56.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/bcf6bb1d-3d73-48ae-5ff1-deb7c327fd51.png)

 
https://marketplace.visualstudio.com/items?itemName=HalcyonTechLtd.code-for-ibmi


### VS CodeへRPGLE FREEをインストール
マーケットプレイスで"RPGLE FREE"を検索
[インストール]をクリックして拡張機能をインストールします

![スクリーンショット 2024-10-01 19.59.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/119dad90-e8d3-7416-2993-f72b23532c3f.png)

# VS CodeでConvertを実践
手順1) IBM iの接続設定を行います
アクティビティバーの赤枠「IBM i」をクリック
![スクリーンショット 2024-10-01 20.05.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/bf97fbfb-3465-69f1-8d6f-a43c52ce36b2.png)

手順2) SERVERSにある「Connect to an IBM i」をクリック
![スクリーンショット 2024-10-01 20.12.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/cc7d193d-0fb9-635a-211c-7b3415dd44b8.png)

手順3) IBM i Loginに下記を設定して「Save & Exit」をクリック
![スクリーンショット 2024-10-01 20.19.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/6791f720-5575-a047-62b4-8c23decd8c6b.png)

>Connection Name：接続名
>Host or IP Address：接続先IBMiのIPアドレス又はドメイン名
>Port(SSH):SSHのポート番号
>Username：ユーザーID
>Password：パスワード
>SavePassword：チェックをつけると登録したユーザーID・パスワードで自動ログイン

#### PUB400.COMを利用する場合の接続設定
>Connection Name：任意
>Host or IP Address：PUB400.COM
>Port(SSH)：2222
>Username：PUB400で登録したユーザーID
>Password：PUB400で登録したパスワード
>SavePassword：チェックをつけると登録したユーザーID・パスワードで自動ログイン

:::note warn
PUB400.COMを利用する場合は、Port(SSH)はWell-knownポートではなく、「2222」となるので注意
:::


手順4) 「Save & Exit」した設定をクリックすると、VS CodeでIBMiへ接続されます
![スクリーンショット 2024-10-01 20.29.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/0988ba18-ae7c-d1b8-adce-f9b09ad4b2f4.png)

:::note warn
IBMiへ接続できない場合、
IBM iでSSHDが開始されていないので、IBM iのコマンドでSSHDを起動してください
```
STRTCPSVR SERVER(*SSHD)
```
:::

手順5)接続が成功すると、サイドバーに下記バーが表示されます
・USER LIBRARY LIST
・OBJECT BROWSER
・IFS BROWSER

手順6) OBJECT BROWSERの「+Create New Filter」をクリック
下記を設定して[Save settings]をクリック

ソースファイルのみを表示するフィルターを作成します<br>
![スクリーンショット 2024-10-01 20.38.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/f7b5d56d-f919-e3eb-a717-bfdb531ce63d.png)


>Filter name：定義するフィルター名
>Library：ライブラリー名
>Object：オブジェクト名
>Object type filter：オブジェクトタイプ
(今回は*SRCPF)

手順7) 作成したフィルターをクリック
フィルターの条件に合致したメンバが一覧で表示されます
![スクリーンショット 2024-10-01 20.52.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/18de7236-b9d5-d160-b87f-8273bc9c1439.png)

手順8) Convertしたいソースファイルをクリック
![スクリーンショット 2024-10-01 21.47.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/977e7655-f24c-4417-1a40-49042ddf5071.png)

手順9)エディタ画面にて、[Ctrl]+[a]で全選択
![スクリーンショット 2024-10-01 21.47.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/27dbce76-417a-ecad-bfa4-e49097466386.png)

手順10) 全選択した状態で、右クリック
コンテキストメニューの「Convert to Free Format」をクリック

![スクリーンショット 2024-10-01 21.48.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/47514153-6fad-ccdc-8b8a-fb4236f96126.png)

手順12) Convertされたことを確認して、保存しましょう！
![スクリーンショット 2024-10-01 21.51.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/f627559b-5c31-4560-8f4b-ccb6658e2a36.png)

Convertを実施してみましたが、
インデントが崩れてたりするので、整形が必要でした。
※このソースを参考にしてもコンパイルはできません。

# まとめ
初めてFreeFormat変換をやってみましたが、
[Ctrl]+[A]の全行選択から右クリックでConvertが手軽にできるのは驚きでした。
是非、参考にConvertを試してみてください。

# 応用編：RDiでConvertをしてみた
RDi(Rational developer for i)は、IBMが提供する統合開発環境（IDE）で、
オープンソースの統合開発環境(IDE)のEclipseをIBMi開発者へ特化した形で作られた製品です。

応用編として、RDiで、Convertが標準機能としてあるので試してみました！
今回、RDi V9.6を利用しました。

1) ソースファイルをエディタ画面で開いて[Ctrl]+[A]で全行選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/01d3d663-6de7-472b-af81-09d7de0d24eb.png)

2) 右クリックして[選択をフリー・フォームに変換(H)]をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/63a08a1f-e199-f830-09d8-dcd9d182f01f.png)

3) FFRPGに変換されていることを確認して、保存しましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/5b4e589e-2f73-278a-593f-de4813f32206.png)

VS CodeでConvertしたソースをRDiでも試し見たところを、演算仕様書以外は変換されませんでした...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3844144/0648b486-c3f5-674d-6698-d9c832b65b2e.png)

ARCAD RPG Converter for IBM iという製品もConvertツールがあるそうですが、有償なので利用できる機会があれば試してみます。

https://ibmi.sct.co.jp/arcad-transformer-rpg/

# 参考サイト
https://fbicenter.co.jp/blog/20230809_ffrpg-convert-2