固定記述の RPG ソースに対するオープン系技術者の抵抗感は
演算命令などが同じ位置に記述されているので、構造化された表示にはならず
読みにくいというものである。
とりわけインデント化されていない演算命令の組み合わせは END 命令が
重なると、どの END
がどの IF
や DO
に対応しているのかを判別が
困難となり、解析に困ることは珍しくない。
フリー・フォーマットの RPG ソースを記述すれば、この問題は解決するのだが
その前にでも END
の使用を止めて ENDxx
に変更するだけで
かなりわかりやすいソースとなる。
[ END だけの記述によるソース ]
0001.00 C 1 DO 100 N 4 0 0002.00 C SELECT 0003.00 C WHEN OPT = 'NXT' 0004.00 C SHCODE SETGT SHOHIN 0005.00 C READ SHOHIN 50 0006.00 C WHEN OPT = 'PRV' 0007.00 C SHCODE SETLL SHOHIN 0008.00 C READP SHOHIN 50 0009.00 C N IFGT *ZEROS 0010.00 C N SUBST RESULT:16 SHCODE 0011.00 C ELSE 0012.00 C MOVE *BLANKS SHCODE 0013.00 C END 0014.00 C END 0015.00 C END
これを IF - ENDIF
, DO - ENDDO
, SELECT - ENDCL
に変更すると次のようになる。
[ ENDxx による記述のソース ]
0001.00 C 1 DO 100 N 0002.00 C SELECT 0003.00 C WHEN OPT = 'NXT' 0004.00 C SHCODE SETGT SHOHIN 0005.00 C READ SHOHIN 0006.00 C WHEN OPT = 'PRV' 0007.00 C SHCODE SETLL SHOHIN 0008.00 C READP SHOHIN 0009.00 C IF N > 0 0010.00 C EVAL SHCODE = %SUBST(RESULT:16:N) 0011.00 C ELSE 0012.00 C CLEAR SHCODE 0013.00 C ENDIF 0014.00 C ENDSL 0015.00 C ENDDO
ENDIF
, ENDSL
, ENDDO
によって記述されているので、どの IF
, SELECT
, DO
に
対応しているのかがわかりやすい。
固定記述であっても、ある程度の構造化を図ることができるのである。