先の「RPG のエラー・モニター(1)〜(3)」 で少し紹介したが、近年は標識を使用しない方向に移行しつつある。
米国紙の RPG ソース・コードのサンプルは、ほとんどフリー・フォーマットによる記述であり、しかも RPG 標識は
全くと言っていいほど使用されていない。その理由は、
- 標識の位置を覚えなければならない。
- 標識の重複によるトラブルを少なくする。
- 標識よりも意味のある表現のほうがわかりやすい。
- 他言語に比べて標識の概念がわかりにくい。
他言語には標識という概念はないわけではなく、論理代数、つまり BOOL
値がこれに相当する。
他言語の場合は、標識という数字ではなく、
BOOL m_bEBCDIC = FALSE;
というように m_bEBCDIC
という TRUE
または FALSE
のどちらかの値をとる、BOOL
変数として「名前」 として
定義されているので、意味を把握しやすい。
さらに RPG の場合、結果の標識を定義する欄が 54桁目、56桁目, 58桁目と( 最近の RPGプログラマーは桁数は
覚えていないであろう ) と 3つの選択肢があるのでソース・コード上では判別しにくくなっている。
ここでは 標識を使用しない、組み込み関数の例をいくつか紹介する。
● CHAIN 命令
【 標識を使用した記述 】
-------------------------------------------------------------------------- C SETOFF 99 C SHCODE CHAIN SHOHIN 99 C 99 EXSR NOT_FOUND --------------------------------------------------------------------------
【 組み込み関数による記述 】
-------------------------------------------------------------------------- C SHCODE CHAIN SHOHIN C IF NOT %FOUND C EXSR NOT_FOUND C ENDIF --------------------------------------------------------------------------
● READ 命令
【 標識を使用した記述 】
-------------------------------------------------------------------------- C SETOFF 50 C READ SHOHIN 50 C 50 LEAVE --------------------------------------------------------------------------
【 組み込み関数による記述 】
-------------------------------------------------------------------------- C READ SHOHIN C IF %EOF C LEAVE C ENDIF --------------------------------------------------------------------------
● SCAN 命令
【 標識を使用した記述 】
-------------------------------------------------------------------------- C 'DB2' SCAN STRING 50 C 50 EXSR FOUND --------------------------------------------------------------------------
【 組み込み関数による記述 】
-------------------------------------------------------------------------- C 'DB2' SCAN STRING C IF %FOUND C EXSR FOUND C ENDIF --------------------------------------------------------------------------