RPG言語 網羅ガイド(学習用)
このページは IBM i / AS/400 文脈で使われる RPG(RPG IV / ILE RPG)を、学習用途で全体像から実装実務まで整理した解説です。完全仕様書ではなく、実務に必要な構文・設計観点を優先してまとめています。
このページは IBM i / AS/400 文脈で使われる RPG(RPG IV / ILE RPG)を、学習用途で全体像から実装実務まで整理した解説です。完全仕様書ではなく、実務に必要な構文・設計観点を優先してまとめています。
free-form RPG(自由形式)中心で、固定形式は保守対象として残ることが多いです。DCL-S: 単純変数DCL-DS: 構造体(データ構造)DCL-PR / DCL-PI: 手続きインターフェースIF / ELSE / ENDIFSELECT / WHEN / OTHER / ENDSLDOW / ENDDO, FOR / ENDFORREAD/CHAIN/SETLL(ファイル)WRITE/UPDATE/DELETE(更新)EXFMT(画面I/O)%TRIM, %SUBST, %LEN%CHAR, %INT, %DEC%DATE, %TIME, %TIMESTAMPdcl-s custNo char(10);
dcl-s custName varchar(50);
dcl-s qty packed(7:0);
if %trim(custNo) = '1001';
custName = 'KURUMON';
else;
custName = 'UNKNOWN';
endif;
for i = 1 to 3;
dsply ('LOOP=' + %char(i));
endfor;
; 必須。=, <>, >, < を使う。+ を使う実装例が多い(環境により差異あり)。CHAR(n): 固定長VARCHAR(n): 可変長%TRIM を使い末尾空白を除去PACKED(p:s): 金額・数量の定番ZONED: レガシー互換で出るINT: カウンタ用途DATE/TIME/TIMESTAMP 型を優先EXFMT で入出力。BEGSR/ENDSR)から手続き化への移行課題setll key CustMst;
chain key CustMst;
if %found(CustMst);
// 取得成功
else;
// 未存在
endif;
chain key OrderMst;
if %found(OrderMst);
status = 'DONE';
update OrderRec;
endif;
CHAIN 連発を避ける)