社内プログラムでCOMPを多用しているのがあったので、どういう動きをするのか調べてみた。
試しに
SETON 404142 1 COMP 2 404142 *IN40 DSPLY *IN41 DSPLY *IN42 DSPLY SETON LR RETRN
を実行してみた。
フラグ1つめは大なり、2つめは小なり、3つ目はイコール。よくあるやつだ。
上記ならば小なりなので、2つ目が真になり、
*IN40が0 *IN41が1 *IN42が0
になる。
ここで注目すべきは最初にすべてSETONしていること。
比較して条件を満たさないものはOFFられることに注意。
例えばこんなコードあったとして、フラグなんて1つでいいのでは?と思い全て40にするとかはダメ。
HOGE COMP '01' 40 HOGE COMP '02' 41 HOGE COMP '05' 42 HOGE COMP '06' 43 HOGE COMP '07' 44 HOGE COMP '09' 45
仮に最初の’01’で真になっても、その下で否にされてしまう。
COMPはよくあるCASE文ではない。
コメント