先の「189.印刷出力だけの最も簡単なRPGプログラム」では演算命令を全く使わずに
印刷出力だけを行う事例を紹介したが、あえて演算命令で LOOP文 によって
商品マスター・レコードを読み取るようにするのであれば
C DO *HIVAL C READ SHOHIN 50 C 50 LEAVE C EXCEPT C END
のように記述していたはずである。
しかし現代的な記述としては、
READ
命令に標識を使用しているので標識(50
) の位置がどこに記述されているのかを
50
)を使用すること自体にわかりにくさを生む。として優れていないのである。
伝統的な RPG ソースに慣れている人であれば何故これがわかりにくいのかと不思議であろう。
しかしオープン系から RPG を学習するとこれらがRPGソースをわかりにくくしているのである。
そこで上記のLOOP文は次のように書き直すことができる。
C READ SHOHIN C DOW (NOT %EOF) C EXCEPT OUTPUT C READ SHOHIN C ENDDO
この LOOP文は READ 命令を重複して2回も使用しているが、このような LOOPの仕方が
オープン系では一般的である。C 言語, Java や VisualBASICを開発したことのある人であれば
逆にわかりやすいはずである。
オープン系の場合は無駄の排除よりも誰が見てもわかりやすいソース・コードこそが
大切なのである。
このRPGソースは標識を使わず、(NOT %EOF)
の条件は直感的で非常にわかりやすいものと
なっている。
READ 命令に標識も割り当てられていないので桁位置を調べる必要もない。
ちょっとした修正だけで、いかにも最新のエレガントな LOOP文に見えてくるから
不思議なものである。
--------------------------------------------------------------------------------- 0001.00 H DFTNAME(TESTLOOP) DATEDIT(*YMD/) 0002.00 F********** 商品一覧表 *********************************************** 0003.00 FSHOHIN IF E K DISK 0004.00 FQPRINT O F 132 PRINTER OFLIND(*INOF) 0005.00 F FORMLEN(66) 0006.00 F FORMOFL(62) 0007.00 F***************************************************************** 0008.00 C READ SHOHIN 0009.00 C DOW (NOT %EOF) 0010.00 C EXCEPT OUTPUT 0011.00 C READ SHOHIN 0012.00 C ENDDO 0013.00 C EVAL *INLR = *ON 0014.00 OQPRINT H 1P 2 06 0015.00 O OR OF 0016.00 O UDATE Y 8 0017.00 O 14 ' 作成 ' 0018.00 O 82 '* 商品マスター一覧表 *' 0019.00 O 128 'PAGE.' 0020.00 O PAGE Z 131 0021.00 O H 1P 2 0022.00 O OR OF 0023.00 O 12 ' 商品コード ' 0024.00 O 34 ' 商品名 ' 0025.00 O 68 ' 単価 ' 0026.00 O 80 ' 品種コード ' 0027.00 O E OUTPUT 2 0028.00 O SHCODE 11 0029.00 O SHNAME 46 0030.00 O SHTANK J 70 0031.00 O SHSCOD 78 ---------------------------------------------------------------------------------