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

言語とGit(RPGⅢ,RPGⅣ,FFRPG)

Posted at

担当 : 森永明日香

IBM i(AS/400) 環境で開発されてきたRPG言語は、時代とともに大きく進化してきました。

本記事では「IBM iソースをGitで管理する」というテーマに対し、RPGⅢ、RPGⅣ、FFRPGの3種類を比較し、どの選択が望ましいのかを整理します。

RPG各言語の違いについて

まずは現在主に使用されている、RPGの種類についてまとめていきたいと思います。

項目 RPGⅢ RPGⅣ FFRPG
記述形式 固定 固定・セミフリー 完全フリーフォーマット
ILE対応
対応エディタ SEU / RDi SEU / VSCode / RDi VSCode / RDi 推奨
ソース保管場所 ライブラリ内 ライブラリ内 / IFS ライブラリ内 / IFS

RPGⅢ

特徴:
1978年に登場。固定形式のため、記述位置が厳密に決まっている。ソースは基本的にライブラリ内のソース物理ファイル内(QxxSRCなど)のメンバーとして格納されます。

Git管理との相性:
・互換性維持のため残っているが、新規開発では非推奨。
・外部のIDEやVSCodeでの編集が難しい。
・IFS上にソースを保存することはできず、ライブラリ内のソース物理ファイルへの保管のみ

RPGⅣ

特徴:
1994年に登場したRPGⅢの後継。表現力が向上し、制御構造や計算式の記述が柔軟に。モジュール化、ILE環境対応がサポートされています。

Git管理との相性:
・ソースはライブラリ(QxxSRC)に保管可能だが、IFS(統合ファイルシステム)に保管することも可能。
・固定長での記述が基本だが、部分的にフリーフォーマットの形式で記述することも可能。
・CLやCOBOLなど他ILE言語と統合できる点で保守性が高い。

FFRPG(Free Format RPG)

特徴:
RPGⅣの完全フリーフォーマット版。ソースコードがすべてフリーフォーマットとなり、現代的な言語に近い書き方が可能となっています。

Git管理との相性:
・インデントや改行の影響を受けやすいが、テキスト差分は明確で分かりやすい。
・VSCode + 拡張機能(Code for IBM i)で編集可能に。
・IFSに保存することが可能。

まとめ

前提として、GitはIBM iのファイルシステムであるIFS上のソースにのみアクセスが可能です⭕
→ IBM i独自形式で管理されている、「ライブラリ内のソース物理ファイル」に保管されている場合、つまり、RPGⅢなどのソースを直接Gitで管理することは難しい…❌

一方で、RDiを利用すればソースファイル内のソースもGit管理可能なため、「 RPGⅢRPGⅣFFRPG 」といった各種RPGをGitで管理することが可能です。ただしRDiは有償のエディタであるため、本検証では対象外とします。

また、VSCodeを利用する場合には、「 IFS上に配置したFFRPG 」の方がGitによる管理に適していると考えられます。
RPGⅣについてもIFS上に配置することでGit管理は可能ですが、固定長形式であることから編集のしやすさに課題が残るため、FFRPGを使用することが望ましいです。

結果

Git管理するのに向いている言語は…
・RDiを使用する場合 → RPGⅢ、RPGⅣ、FFRPG
・VSCodeを使用する場合 → FFRPG(RPGⅣのソース管理も技術的には可能)

2025Risingチームeまとめへ


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

1
0
1

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