RPG

254.標識を避けてわかりやすいソースを

Java などの他言語からRPGの開発へシフトした開発者の多くがわかりにくい、と
感じるのが 01-99 の標識である。
RPGの標識はブール値と言われる真偽を表す特殊な変数であり、
これは何もRPGに限ったことではなく Java, C, C++, VC++, VB, C#, JavaScript, VBA ,...と
あらゆる開発言語で必要であり使用されている。

にも関わらず標識がわかりにくいとされるのは 01-99 での
意味を感じられない数字であるということだろう。
数字ではその意味が感じられないので、いきなり標識を見たときは、
その標識がオンになっている箇所を探し出して初めてその標識の意味を知ることになる。

この作業が初めてそのソースを見る人にとってはフラストレーションになるのであろう。
意味のわかるブール値であれば、それなりに納得して次の解釈に進むことができるからだ。

IBM もこれは承知しているようで CHAIN や READ の結果の標識を定義するのではなく
%FOUND などの組み込み関数によって標識を使うことを避ける手段を提供している。

しかし、それでも標識によって条件を保持しておきたいケースは出てくる。
このサイトでは以前に「119.名前による標識を使うには?」でテクニックを紹介したのだが
これは 01-99 の標識つまり *IN に無理やり名前を当てはめるという手法で
一般的なものではなかった。

しかし今では文字タイプに N という標識(ブール値)を示すタイプが使えるようになっていて

    D  CHGFLG                        1N   

のようにして手軽にブール値を定義することができる

     C              MOVE *ON     CHGFLG	 
     C              EVAL CHGFLG = *ON	 
      /FREE
                CHGFLG = *ON;
      /END-FREE	  
     C              IF CHFLG = *ON

のようにして使うことができる。
このように名前のある標識(ブール値)を使えば読み手にもわかりやすくなるので
今後のRPGにはお勧めしたい。

※ブール値 (Bool Value)
ブール値とは 1(真) または 偽(0) を表す値であり、
これ以外の値を取りえない変数のことである。
真および偽の組み合わせだけによる演算を定義したブール代数に語源がある。
数学を専門に学習したことのある人なら覚えがあるかも知れない。