RPG III や初期のILE-RPG では IF文に対するENDもLOOP文に対するENDも
同じENDを使用していたが進化したILE-RPGでは
同じENDでも ENDxxとして区別できるようになった。
例えば
IF %SUBST(FLD:1:1) = '*'
:
ENDIF
や
1 DO *HIVAL N
:
ENDDO
のように IFに対応するENDをENDIF で書き、
DO-LOOPに対応する END を ENDDOで記述する。
もちろん両方とも同じENDを使って記述しても構わない。
しかし敢えてENDxxで区別して記述することを
お奨めする。
それは
1. ENDxx がどのIFかDOに対応するENDであるかを読み手が
識別しやすい。
2. ENDDOであるべきところを誤ってENDIFで記述すると
コンパイラーがエラーとして示してくれる。
どちらも同じENDの場合はコンパイルのエラーにはならない。
… 理由は圧倒的に2.の理由である。
隠れたバグを回避できるということで品質の高いプログラムに
近づけることができる。
ENDのとり違いなどしているとなかなか気付かないものだ。
品質の高い適用業務を構築するためにもENDxxはぜひ
意図的に区別して記述するようにして欲しい。
もちろんフリー・フォーマットであればインデントして記述できるので
一層ENDxxの意味はわかりやすくなる。
0016.00 /FREE 0017.00 IF CODE = '001'; 0018.00 FOR N=1 TO 10; 0019.00 SU = SU + 100; 0020.00 ENDDO; 0021.00 ENDIF; 0022.00 /END-FREE