RPG

388. 配列の要素数を調べる%ELEM

%ELEMで配列の要素数を調べることができる。
例えば配列の数だけLOOPして処理をしたい場合に
この配列の要素数が18であるとすると

     D DTR             S            100    DIM(18)
        :
4091.00 C     1             DO        18          M                              DO-LOOP
        :
        C                   ENDDO                        DO-LOOP

と書くよりも

     D DTR             S            100    DIM(18)
        :
        C                   EVAL      ELEM = %ELEM(DTR)
4091.00 C     1             DO        18          M                              DO-LOOP
        :
        C                   ENDDO                        DO-LOOP

と書くほうがよい。
何故ならば配列DTRの要素数がプログラムの拡張によって増える可能性が
あるからである。
配列DTRの要素が20個に増えたのにソースを修正し忘れると
18個しかLOOPしないというバグが発生してしまう。
%ELEM で配列数を取得するようにしておくと要素数が増えても
自動的に配列数が計算されるためそのような問題は起こることはない。

将来の修正や拡張があったときに複数個所を変更しなければならないソースよりも
できるだけ変更箇所が少なくて済むようなソースにしておくことが
要らぬバグの発生要因を抑えることになる。
そのような配慮があればたとえ後からの修正する人が見落としたとしても
問題の発生を防ぐことができる。
品質に優れたプログラムにするためにはこのように将来に備えた事前の配慮が必要である。