RPG

394. ENDxx も必要

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