| パラダイム | マルチパラダイム |
|---|---|
| 開発者 | IBM |
| 初登場 | 1959年 |
| 安定リリース | RPG IV バージョン7 リリース4 / 2020年10月6日 |
| タイピングの規律 | 強い、静的 |
| OS | CPF、SSP、OS/400、IBM i、OS/VS1、z/OS、DOS/VSE、VSE/SP、VSE/ESA、z/VSE、VS/9、PRIMOS、OpenVMS、Wang VS、Burroughs MCP、HP MPE、MS-DOS、OS/2、Microsoft Windows |
| 方言 | |
| RPG、RPG II、RPG III、RPG 400、RPG IV、RPG/ILE、RPG/Free、Baby/36、Baby/400、Lattice RPG、VAX RPG II | |
| 影響を受けた | |
| 9PAC、ファーゴ | |
RPG は、1959 年にIBM 1401用に導入された、ビジネス アプリケーション用の高水準プログラミング言語です。IBM iオペレーティング システムを含むIBM の中規模コンピュータ製品ラインの主要プログラミング言語として最もよく知られています。[1] RPG は、従来、プログラム サイクルや列指向構文など、いくつかの独特な概念を特徴としてきました。[2]最新バージョンはRPG IVで、自由形式構文など、いくつかの近代化機能が含まれています。[3]
プラットフォーム
RPGプログラミング言語はもともとIBMが1401システム用に作成したものです。IBMは後に7070/72/74 [4] [5]およびSystem/360 [6]向けの実装を作成しました。RPG IIは同社のミッドレンジコンピュータ製品ライン(System/3、System/32、System/34、System/38、System/36、AS/400)の主要プログラミング言語となりました。また、DEC VAX、Sperry Univac BC/7、Univac system 80、Siemens BS2000、Burroughs B700、B1700、Hewlett Packard HP 3000、ICL 2900シリーズ、Honeywell 6220 および 2020、Four-Phase IV/70 および IV/90 シリーズ、Singer System 10、WANG VS向けの実装もあり、さらに Infinite36 (旧 Unibol 36) などの Unix ベース システムや PC (Baby/400、Lattice-RPG) 向けのさまざまなコンパイラやランタイム環境も実装されています。
RPG IIアプリケーションは、IBM z/VSE [7]およびz/OSオペレーティングシステム、[8] Unisys MCP、[9] Microsoft Windows [10]およびOpenVMS [11]でも引き続きサポートされています。
歴史
背景
1959年にIBMによって開発されたReport Program Generatorという名前は、データファイルからレポートを生成するという言語の目的を表していました。[12] FOLDOCは、 IBMでのRPG開発につながった仕事でWilf Heyを表彰しています。[13] FARGO (Fourteen-o-one Automatic Report G eneration O peration )は、IBM 1401上のRPGの前身でした。
どちらの言語も、IBM の集計マシン(Tab)ユニット記録装置の技術者が当時の新しいコンピュータに簡単に移行できるようにすることを目的としていました。Tab マシンの技術者は、入力、出力、制御、およびカウンタ操作 (加算、減算、乗算、除算) を実行するために、コントロール パネルに配線を接続することに慣れていました。Tab マシンのプログラムは、マシン サイクルで発せられるインパルスによって実行されました。したがって、FARGO と RPG は、マシン サイクルの概念をプログラム サイクルでエミュレートしました。RPG は FARGO よりも優れており、レポート生成プログラムの選択肢として急速に FARGO に取って代わりました。
IBMは後にRPG(7070-RG-902)をIBM 7070 /72/74に実装したが、FARGOは実装しなかった。 [14] [15]
当時一般的に利用可能な代替言語は、アセンブラ、COBOL、またはFORTRANでした。アセンブラとCOBOLはメインフレームの業務処理( System/360モデル30以上)でより一般的であり、RPGは表計算機器(System/360モデル20)からの移行中の顧客によってより一般的に使用されていました。
RPG II
RPG II は、1969 年頃にSystem/3シリーズのコンピュータとともに導入されました。その後、言語の改良版がSystem/32、System/34、System/36で使用されました。RPG II は、 DOS/VSE (当時はVSE/SP、VSE/ESA、z/VSE )を実行するIBM System/370メインフレームなどの大規模システムでも使用できました。ICLもVME/Kオペレーティング システム用のバージョンを製造しました。
RPG の初期の頃、その主な強みはプログラム サイクルでした。プログラマーは個々のレコードを処理するコードを書き、プログラム サイクルは制御フローを処理しながら、ファイルのすべてのレコードに対して変更を実行します。当時、各レコード (個々のパンチ カード) はプログラムの各行と比較され、その行の「インジケータ」が「オン」か「オフ」かに基づいて、レコードに対してアクションを実行するか実行しないかが決まりました。インジケータは、ユーザー定義の目的のために 01 ~ 99 の番号が付けられた論理変数のセット、またはレコード、フィールド、またはレポート処理機能に基づくその他の小さなセットで構成されていました。レベル区切りとレコードのマッチングの概念は RPG II 言語に固有のものであり、もともとカード リーダーを念頭に置いて開発されました。サイクルのレコードのマッチング機能により、ヘッダーと詳細の関係を持つファイルを簡単に処理できました。プログラム サイクルを利用するように作成された RPG プログラムは、COBOLやその他のビジネス中心の言語で作成されたプログラムよりもはるかに少ない行数のコンピュータ コードで複雑なレポートを作成できました。
プログラム ファイル仕様には、書き込み、読み取り、または更新されるすべてのファイルがリストされ、その後にデータ構造や次元配列などのプログラム要素を含むデータ定義仕様が続きます。これは、COBOL プログラムの「作業記憶域」セクションによく似ています。その後に実行可能な命令を含む計算仕様が続きます。出力仕様は、他のファイルやレポートのレイアウトを決定するために使用できます。または、ファイル、一部のデータ構造、およびレポートを外部で定義することもできます。これにより、ほとんどの場合、入力および出力 (「 I/O」) 仕様を 手動でコーディングする必要がなくなります。
RPG3 の
RPG IIIはSystem/38とその後継機であるAS/400用に作成されました。RPG III は元の言語から大きく逸脱し、IF-ENDIF ブロック、DO ループ、サブルーチンなどの最新の構造化構造を提供しています。RPG III は、 OS/VS1を実行するIBM System/370メインフレームなどの大規模システムでも使用できました。また、 UNIVAC Series 90メインフレームで実行されるVS/9オペレーティング システム用にUnisysから提供されていました。
1979 年にIBM System/38が導入されて以来、ほとんどの RPG プログラマーはサイクルの使用をやめ、標準のループ構造を使用してプログラム フローを制御するようになりましたが、IBM はサイクルの下位互換性を提供し続けています。
RPG/ゲーム
DE/RPGまたはデータ エントリ RPG は、 80 年代初頭にIBM 5280シリーズのデータ エントリ ワークステーションでのみ使用可能でした。これは RPG III に似ていますが、System/38 およびその後継機のようにデータ (ファイル) を記述するための外部データ記述 (DDS) がありません。代わりに、DDS 部分を RPG ソース自体に含める必要がありました。
RPG/400
RPG/400 は、実質的には AS/400 上で実行される RPG III でした。IBM は RPG コンパイラーを「RPG/400」に改名しましたが、導入当時は System/38 上の RPG III コンパイラーと同一でした。実質的にすべての IBM System/38 製品は xxx/400 としてブランド名が変更され、RPG コンパイラーも例外ではありませんでした。RPG/400 コンパイラーでコンパイルされた RPG III は、AS/400 が利用可能になって数年後に IBM が SCAN、CAT、XLATE などの新しい命令コードの開発を開始するまで、RPG III 言語に新しい機能を提供しませんでした。RPG III に対するこれらの機能強化は、System/38 バージョンの RPG III では利用できませんでした。
RPG IV と ILE RPG
RPG IV(別名RPG ILE [16] )は、1994年にOS/400(現在はIBM iとして知られている)のV3R2リリースの一部としてリリースされました。 [17] [18]
RPG IVのリリースにより、RPGという名前は正式には頭字語ではなくなりました。RPG IVは、拡張因子2計算仕様内でより多様な表現を提供し、後には自由形式の計算仕様と手続き構文を提供しました。統合言語環境フレームワークのRPG IVはILE RPGとして知られており、ユーザーガイドでは両方のニュアンスが説明されています。[19] [20] [21] RPG IVとILE RPGは、現在のIBM iプラットフォームでIBMによってサポートされています。[22]
2001 年、 OS/400 V5R1のリリースにより、RPG IV は拡張因子 2 計算仕様よりも計算の自由度が高まりました。つまり、元の列依存ソース フォーマットの代わりとして、フリー フォーマットのテキスト対応ソース エントリが提供されました。"/FREE" 計算では、命令コードを特定の列に配置する必要はなく、EVAL および CALLP 命令では命令コードはオプションで、構文は一般に主流の汎用プログラミング言語の構文に近くなりました。2013 年 11 月まで、フリー フォーマットは計算仕様にのみ適用されていました。[23] IBM i V7R1 TR7 への言語のアップグレードにより、"/free" および "/end-free" 計算は不要になり、この言語はついにパンチ カードとの結びつきを断ち切りました。
IBM Rational Developer for i (RDi) [24]は、 Eclipseベースの統合開発環境であり、IBMによってRPG開発に推奨されています。[25] Source Entry Utility (SEU)テキストエディタはRPG開発には推奨されなくなり、IBM i 6.1以降開発は中止されました。[26]その他のレガシー開発ツールには、CODE/400 (IBM WorkFrame/2ベース) やVisualAge for RPGなどがあります。
言語の継続的な強化
IBMは、ソフトウェア リリースとリリース内「テクノロジー リフレッシュ」(TR) [28] を通じて、RPG言語[27]の機能強化を続けています。 [28] [29] より多くの組み込み関数 (BIF) が追加されました。Javaオブジェクト [30] やIBM i API にリンクする機能があり、IBMのCgidev2 Webツールキット[31] 、 RPG Toolbox、およびその他の商用Web対応パッケージの助けを借りてCGIプログラムを作成するために使用できます。変更があっても、かなりの下位互換性が保持されているため、37年前に作成されたRPGプログラムをほとんどまたはまったく変更せずに今日実行できます。
SQL プリコンパイラーにより、現在の RPG 開発者は IBM のコストベースの SQE (SQL クエリー エンジン) を活用できます。従来の F-Spec アプローチでは、開発者はデータ セットへの特定のアクセス パスを識別する必要がありましたが、今では標準の埋め込み SQL ステートメントをプログラムに直接実装できます。コンパイルされると、SQL プリコンパイラーは SQL ステートメントを RPG ステートメントに変換し、最終的にクエリー要求を実装するデータベース マネージャー プログラムを呼び出します。
RPG IV 言語はEBCDIC文字セットに基づいていますが、UTF-8、UTF-16 および他の多くの文字セットもサポートしています。この言語のスレッドセーフな側面は、コンパイラ チームが RPG ランタイム環境を再入可能にするのではなく、各スレッドに独自の静的ストレージを与えることでスレッドに対処しているため、一部の人々からは特異であると考えられています。これにより、スレッドとプロセスの区別が曖昧になることが指摘されています (RPG IV スレッドは、スレッドとプロセスのハイブリッドのようなものです)。
2010年にIBMはRPG Open Access ( Rational Open Access: RPG Editionとも呼ばれる)をリリースした。これによりプログラマーが新しいI/Oハンドラーを定義できるようになり、RPGが組み込みサポートを提供していないソースからのデータの読み取りや書き込みが可能になった。[32]
データ型
RPG は次のデータ型をサポートしています。
注:データ型
列の文字は、データ型用に指定された列の定義仕様でエンコードされる文字です。比較すると、変数の定義が自由形式で、整数変数を宣言するためにintなどのキーワードを使用する C などの言語では、RPG では、変数は固定形式の定義仕様で定義されます。定義仕様では、ソース行の列6に文字Dで示され、データ型文字は列40にエンコードされます。また、データ型文字が省略されている、つまり空白のままになっている場合、小数点以下の桁数が指定されていない場合はデフォルトはA、スタンドアロン フィールドに小数点以下の桁数が指定されている場合は P、データ構造内で小数点以下の桁数が指定されている場合はS (ZONED) になります。
サンプルコード
次のプログラムは、顧客番号を入力パラメータとして受け取り、名前と住所を出力パラメータとして返します。これは、RPG IV 構文の最も原始的なバージョンです。同じプログラムを、構文を徐々に現代的バージョンにし、ルールを徐々に緩和したもので後ほど示します。
* 歴史的にRPGは列形式の性質を持っていましたが、
* 特定の状況下で許可されました。
* さまざまな行コードの目的は、
* 6列目の文字コード。
* 7列目のアスタリスク(*)はコメント行を表します
* 「F」(ファイル)仕様はファイルやその他のI/Oデバイスを定義します
F ARMstF1 IF EK ディスク名変更(ARMST:RARMST)
* 「D」(データ)仕様は変数を定義するために使用されます
D pCusNo S 6p
D pName S 30a
D pAddr1 S 30a
D pAddr2 S 30a
D pCity S 25a
D pState S 2a
D pZip S 10a
* 「C」(計算)仕様は実行可能なステートメントに使用されます
* パラメータはplistとparmオペコードを使用して定義されます
C *エントリplist
C パラメータ pCusNo
C パラメータ pName
C パラメータ pAddr1
C パラメータ pAddr2
C パームシティ
C パラメータ pState
C パラメータ pZip
* 「チェーン」コマンドは、キー付きファイルのランダムアクセスに使用されます。
C pCusNo チェーン ARMstF1
* レコードが見つかった場合は、ファイルからフィールドをパラメータに移動します
%見つかった場合はC
評価 pName = ARNm01
c 評価 pAddr1 = ARAd01
c 評価 pAddr2 = ARAd02
計算 pCity = ARCy01
C 評価 pState = ARSt01
pZip = ARZp15 を評価する
C終了
* RPG はスイッチを使用します。スイッチの 1 つ「LR」は元々「最後のレコード」の略でした。
* LRはプログラムとそのデータスペースをメモリから削除可能としてフラグ付けします
C 評価 *InLR = *On
V5R1 以降で利用可能なフリー計算を使用する同じプログラム:
* 「F」(ファイル)仕様はファイルやその他のI/Oデバイスを定義します
FARMstF1 IF EK ディスクの名前変更(ARMST:RARMST)
* 「D」(データ)仕様は変数とパラメータを定義するために使用されます
* プログラムの「プロトタイプ」は別のファイルにあります
* 他のプログラムから呼び出せるようにする
/コピーcust_pr
*「プロシージャインターフェース」は*ENTRYパラメータを記述します
D getCustInf PI
D pCusNo 6p 0 定数
D pName 30a
D pAddr1 30a
D pAddr2 30a
D pCity 25a
D pState 2a
D pZip 10a
/無料
// 「chain」コマンドはキー付きファイルのランダムアクセスに使用されます
チェーン pCusNo ARMstF1;
// レコードが見つかった場合は、ファイルからフィールドをパラメータに移動します
%が見つかった場合;
pName = ARNm01;
pAddr1 = ARAd01;
pAddr2 = ARAd02;
_City_name = _City_name _type ...
pState = ARSt01;
ARZp15 を解凍します。
終了;
// RPG はスイッチを使用します。スイッチの 1 つ「LR」は元々「最後のレコード」を意味していました。
// LR は実際にはプログラムとそのデータスペースをメモリから削除可能としてフラグ付けします。
*InLR = *オン;
/終了なし
ARMSTF1 サンプル テーブルが次の SQL ステートメントを使用して作成されたと仮定します。
テーブルarmstf1を作成します(arcnum10進数(7、0 )、arname文字(30 )、aradd1文字(30 )、aradd2文字(30 )、arcity文字(25 )、arstte文字(2 )、arzip文字(10 ))
自由計算と埋め込み SQL を使用した同じプログラム:
* RPG IV では、プログラムを終了するために *INLR インジケーターを使用する必要がなくなりました。
* 「H」(ヘッダー)仕様でMAINキーワードを使用し、「メイン」または
* エントリプロシージャ名を使用すると、プログラムは使用せずに正常に開始および終了します。
* 数十年前の RPG Cycle ではなく、より「C のような」開始および終了ロジックを採用しました。
H メイン(getCustInf)
* 「D」(データ)仕様は変数とパラメータを定義するために使用されます
* プログラムの「プロトタイプ」は別のファイルにあります
* 他のプログラムから呼び出せるようにする
/コピーcust_pr
*「プロシージャインターフェース」は*ENTRYパラメータを記述します
P getCustInf B
D getCustInf PI
D pCusNo 6p 0 定数
D pName 30a
D pAddr1 30a
D pAddr2 30a
D pCity 25a
D pState 2a
D pZip 10a
/無料
exec sql は arName、arAddr1、arAdd2、arCity、arStte、arZip を選択します。
:pName、:pAddr1、:pAddr2、:pCity、:pState、:pZip に
ARMstF1より
ここでarCNum = :pCusNo
フェッチのみ
最初の1行のみ取得
1行に最適化
CS付き
/終了なし
P 顧客情報取得 E
オペレーティング システム V7R1 以降では、上記のプログラムは必ずしも別のファイルにプロトタイプを必要としないため、次のように完全に記述できます。
H main ( GetCustInf ) D ARMSTF1 E DS P GetCustInf B D GetCustInf PI extpgm ( 'CUS001' ) D inCusNo like ( arCNum ) const D outName like ( arName ) D outAddr1 like ( arAdd1 ) D outAddr2 like ( arAdd2 ) D outCity like ( arCity ) D outState like ( arStte ) D outZip like ( arZip ) / free exec sql select arName , arAdd1 , arAdd2 , arCity , arStte , arZip into : outName , : outAddr1 , : outAddr2 , : outCity , : outState , : outZip from ARMSTF1 where arCNum = : inCusNo fetch first 1現在コミットされているCS使用の行のみ; /終了-解放P GetCustInf E
最後に、コンパイラー PTF 関連の Technology Refresh 7 (TR7) を 7.1 オペレーティング システムに適用すると、上記のプログラムは次のように完全に自由形式でコーディングできます。
ctl - opt main ( GetCustInf ); dcl - ds ARMSTF1 ext end - ds ; dcl - proc GetCustInf ; dcl - pi * n extpgm ( 'CUS001' ); inCusNo like ( arCNum ) const ; outName like ( arName ); outAddr1 like ( arAdd1 ); outAddr2 like ( arAdd2 ); outCity like ( arCity ); outState like ( arStte ); outZip like ( arZip ); end - pi ; exec sql select arName 、arAdd1 、arAdd2 、arCity 、arStte 、arZip into : outName 、: outAddr1 、: outAddr2 、: outCity 、: outState 、: outZip from ARMSTF1 where arCNum = : inCusNo CSで最初の1行のみをフェッチし、現在コミット済みを使用します。戻り値: end - proc 。
参考文献
- ^ 「RPG ILE 入門」。IBM。2012 年 6 月。2024 年 2 月 29 日時点のオリジナルよりアーカイブ。2021年 3 月 16 日閲覧。
- ^ Tony Baritz、David Dunne (1991)。AS/400 - 概念と機能。McGraw- Hill。ISBN 978-0-07-018301-8. 2024年2月29日時点のオリジナルよりアーカイブ。2021年3月16日閲覧。
- ^ Alex Woodie (2020-08-24). 「RPGの名前を変更する時期が来たか?」itjungle.com . 2021-04-23時点のオリジナルよりアーカイブ。2021-03-16閲覧。
- ^ 7070/7074 コンパイラー システム: レポート プログラムジェネレーター。IBM。C28-6113 。
- ^ プログラミング・システム分析ガイド - IBM 7070シリーズ・レポート・プログラム・ジェネレーター(PDF)。IBM 。 1962年。C28-6192。 2024年1月19日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月19日閲覧。
- ^ IBM System/360 - オペレーティング・システム - RPG 言語仕様 - プログラム番号 380S-RG-038 (OS) (PDF) (第 7 版)。IBM。1973年7 月。GC24-3337-6。2024年 1 月 19 日時点のオリジナルよりアーカイブ(PDF) 。2024 年1 月 19 日閲覧。
- ^ 「IBM DOS/VS RPG-II」。IBM。2020年8月3日。2021年4月17日時点のオリジナルよりアーカイブ。2021年3月17日閲覧。
- ^ 「サポートされている製品リスト」。IBM。2021年3月16日。2021年5月2日時点のオリジナルよりアーカイブ。2021年3月17日閲覧。
- ^ 「ClearPath MCP Express」(PDF)。Unisys。2017年。2020年11月12日時点のオリジナルよりアーカイブ(PDF) 。 2021年3月17日閲覧。
- ^ 「Visual RPG for .NET」。asna.com。ASNA。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月3日閲覧。
- ^ “Migration RPG”. migrationspecialties.com . 2021年5月17日時点のオリジナルよりアーカイブ。2021年3月17日閲覧。
- ^ 「...IBM 1401 とレポート プログラム ジェネレーター (RPG) がこの成功に大きく貢献しました...」Wayback Machineに 2012-01-24 にアーカイブ、IBM 1401 データ処理システム / 1959
- ^ しかし、ここで言及されている 1959 年ではなく、1965 年と書かれています。
- ^ 7070/7074 コンパイラー システム: レポート プログラムジェネレーター。IBM。C28-6113 。
- ^ プログラミング・システム分析ガイド - IBM 7070シリーズ・レポート・プログラム・ジェネレーター(PDF)。IBM 。 1962年。C28-6192。 2024年1月19日時点のオリジナルよりアーカイブ(PDF) 。 2024年1月19日閲覧。
- ^ 「CEERAN0 API を使用した ILE RPG での乱数生成」、IBM.com
- ^ 「どうしてRPG IVの成熟期を見逃したのか?」Wayback Machineに2017年3月3日アーカイブ、ibmsystemsmag.com
- ^ “RPG/400”. IBM.com . International Business Machines Corporation. 2018年5月8日. 2022年4月3日時点のオリジナルよりアーカイブ。 2022年4月4日閲覧。
- ^ 「ILE RPG リファレンス」。IBM.com。International Business Machines Corporation。2012年6月。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月4日閲覧。
- ^ 「ILE RPG プログラマーズ・ガイド」。IBM.com。International Business Machines Corporation。2012年6月。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月4日閲覧。
- ^ 「このガイドの対象読者」。IBM.com。International Business Machines Corporation。2012年6月。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月4日閲覧。
- ^ 「High Level Languages」。IBM.com。International Business Machines Corporation。2018年5月8日。2022年4月3日時点のオリジナルよりアーカイブ。 2022年4月4日閲覧。
- ^ Paris, Jon ; Gantner, Susan. 「Totally Free RPG」. IBM Systems Magazine. 2014年3月8日時点のオリジナルよりアーカイブ。 2014年3月8日閲覧。
- ^ 「IBM Rational Developer for i」。IBM.com。International Business Machines Corporation。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月3日閲覧。
- ^ 「5770-WDS IBM Rational Development Studio for i V7.4」。IBM.com。International Business Machines Corporation。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月3日閲覧。
- ^ 「5770-WDS IBM Rational Development Studio for i V7.4」。IBM.com。International Business Machines Corporation。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月4日閲覧。
- ^ IBM. 「RPG Cafe」. IBM.com . International Business Machines Corporation. 2022年4月3日時点のオリジナルよりアーカイブ。 2022年4月3日閲覧。
- ^ IBM. 「IBM i テクノロジーアップデート」。IBM.com。International Business Machines Corporation。2022年4月12日時点のオリジナルよりアーカイブ。2022年4月3日閲覧。
- ^ IBM. 「IBM i テクノロジーリフレッシュ」。IBM.com。International Business Machines Corporation。2022年4月3日時点のオリジナルよりアーカイブ。2022年4月3日閲覧。
- ^ 「RPG/400 ユーザーズ・ガイド」(PDF)。Ibm.com 。 2017年8月7日時点のオリジナルよりアーカイブ(PDF) 。 2017年8月6日閲覧。
- ^ “EASY400 CGIDEV2”. Easy400.net . 2019年3月26日時点のオリジナルよりアーカイブ。2019年3月26日閲覧。
- ^ 「Rational Open Access: RPG Edition」。IBM。2024年2月29日時点のオリジナルよりアーカイブ。2021年3月17日閲覧。
さらに読む
- 「9PAC、レポート ジェネレーター」。プログラミング言語の歴史 (HOPL)、マードック大学、オーストラリア。2006 年。2010 年 12 月 24 日にオリジナルからアーカイブ。2008年 4 月 1 日に取得。
- 「RPG、レポート プログラム ジェネレーター」。プログラミング言語の歴史 (HOPL)、マードック大学、オーストラリア。2006 年。2011 年 4 月 15 日にオリジナルからアーカイブ。2008年 4 月 1 日に取得。
- DuCharme, Bob (2006-02-26)。「20 世紀半ばから 21 世紀初頭にかけてのコンピューターからのデータの抽出」。
- Cozzi, Robert (1996)。「現代の RPG IV 言語」
- Shelly, Gary B.; Thomas J. Cashman (1977)。『コンピュータプログラミング RPG 入門』カリフォルニア州フラートン: Anaheim Publishing Company。ISBN 0-88236-225-9。
外部リンク
- Smith, Brian R.、Martin Barbeau、Susan Gantner、Jon Paris、Zdravko Vincetic、Vladimir Zupka (2000 年 4 月 25 日)。「RPG IV でそんなことできるなんて、誰が知っていたでしょう? システム アクセスなどに関するソーサラー ガイド」(PDF)。IBM International Technical Support Organization。2012年 2 月 18 日閲覧。「このレッドブックは、21 世紀の現代的で活気のあるリッチなアプリケーション開発言語としての RPG IV に焦点を当てています。」
- Midrange.com — 多数のコード例がここにあります
- RPGPGM.COM — RPGコードと関連プログラミングの例を示す記事の広範なリソース
- RPG Open — RPG IV および IBM i アプリケーション開発用の無料 (オープン ソース) リソース。
- IBM (1964)。IBM 1401 RPG マニュアル(PDF)。C24-3261-1。
- IBM (2016)。 ILE RPG プログラマーズ・ガイド(PDF)。 SC09-2507-10。
- RPG II for MVS、OS/390、z/OS — z/OS における IBM RPG II 製品のステータス
