RPGⅢのソースをRPGⅣ(ILE RPG)のソースに変換してくれるコマンドが[CVTRPGSRC]です。
コマンドは以下を参考にしてください。
CVTRPGSRC FROMFILE(TEST/QRPGSRC) FROMMBR(TEST001) TOFILE(*LIBL/QRPGLESRC)
(コマンド記述の説明)
ライブラリーTESTのファイルQRPGSRCにあるメンバーTEST001を
ライブラリー*LIBLのファイルQRPGLESRCにコンバートします。
このコマンドに関する詳細は以下のリンク先を参照ください。
・FFRPG言語徹底解説~ILERPGへのコンバート方法~
https://fbicenter.co.jp/blog/20230515_ffrpg-convert
・RPGソースの変換 (CVTRPGSRC)
https://www.ibm.com/docs/ja/i/7.5?topic=ssw_ibm_i_75/cl/cvtrpgsrc.html
CVTRPGSRCを実行する前にやるべき対策
ファイル関連の記述をI仕様書の一番下に移動する
この位置変更をするだけでコンバート後のソースを再編集する手間がとても減ります。
位置変更を行わずにコマンドを実行すると、ファイル関連以下がD仕様書に変換されない
ケースがとても多く、手動でD仕様書に変更する手間が出ます。
CVTRPGSRCを実行した後に確認するべき記述
ファイルに関連する標識の設定位置
ファイルに関連する標識の記載位置をRPGⅣ用の記述位置に変更する必要があります。
標識は赤枠部分に記載しないといけないが、位置変更されないケースが多発しています。
CVTRPGSRCで正しく変換されないケース例まとめ
CVTRPGSRCでコンバートした後にソースを変更する必要があるケースは複数あります。
筆者の環境で発生パターンが確認できているもので5パターンあります。(2024/09/25時点)
・ケース1~3:コンパイル時にエラーとなってしまうため修正必須です。
・ケース4 :コンパイルエラーは出ませんが、/COPYが展開されてしまいます。
・ケース5 :記述は正しくないですがコンパイルは通ります。
ケース1:ファイルに関連する標識を設定する処理と/COPYの並び順
RPGⅣでのソース記述は[/COPY]→[ファイル]となるよう記述を変更してください。
画像の並び順のままでコンパイルすると以下のエラー(*RNF0257)が出ます。
ケース2:ファイルに関連する標識を設定する処理の問題
ファイルに付随する標識の記載位置をRPGⅣ用の標識記述位置に変更する必要があります。
RPGⅢ:コマンド実行前のソース
RPGⅣ:コマンド実行直後のソース(標識は赤枠部分に記載しないといけないためエラー)
ケース3:同一テーブルに関する記載がE仕様書、I仕様書に記載がある場合
/COPY内のフィールドに対する設定を行う場合は高確率で不具合が出ます。
RPGⅢ:コマンド実行前のソース
RPGⅣ:コマンド実行後のソース(旧E仕様書・旧I仕様書のどちらの記述も残ってしまう)
(※/COPY展開[*YES]にすると問題は解消しますが、/COPYの中身が展開され、
PGM上で固定記載となるため、/COPYの記述である意味がなくなります)
ケース4:RPG3のソースタイプが[RPT]
ソースタイプが[RPT]の場合はコピー・メンバーの拡張を[*NO]にしても/COPY部分が
強制的に展開されます。※コンパイルは通ります。
ケース5:データストラクチャ(DS)の設定が/COPYより上に記述されている
/COPY部分はD仕様書になるはずですがコンバートされないケースがあります。
※コンパイルは通ります。
RPG3:コマンド実行前のソース