ご存知の方も多いと思うが V5R1M0 からは ILE-RPG (RPG400) の内部記述は自由形式
(フリー・フォーマット)で記述が可能になっている。
自由形式の記述は
特にサブ・プロシージャーの呼び出しが頻繁に発生する演算は自由形式で記述すると
見やすくなる。
米国雑誌の著者では「私は今では、すべて自由形式でしか記述しない」と述べている人も
いるくらいである。
CSR IF RT = *OFF CSR CALLP SAVE_STACK(%ADDR(STACK)) CSR CALLP WRITE_RECORD('DSPHEAD ') CSR CALLP HTMLOUT('DSPHEAD ':DSPHEAD_HTM) CSR ADD 1 LV CSR EVAL RT = *ON CSR RETURN CSR END CSR EVAL RT = *OFF CSR CALLP READ_RECORD('DSPHEAD ')
/FREE IF RT = *OFF ; SAVE_STACK(%ADDR(STACK)); // スタックを保存 WRITE_RECORD('DSPHEAD '); //HTML へ書き込み HTMLOUT('DSPHEAD ':DSPHEAD_HTM);// HTML 出力 LV = LV + 1; RT = *ON; RETURN; ENDIF ; RT = *OFF; READ_RECORD('DSPHEAD '); //HTML の読み取り /END-FREE
CALLP
がないので WRITE_RECORD
や HTMLOUT
など新しいRPGの命令で
あるかのようにも見える。
しかし従来のRPG にある命令と同じ名前の命令、例えば「EXFMT」のような
プロシージャーを作成するとコンパイラーが負荷エラーを起こしてしまうので注意。