社内プログラムでCOMPを多用しているのがあったので、どういう動きをするのか調べてみた。
試しに
1 2 3 4 5 6 7 |
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にするとかはダメ。
1 2 3 4 5 6 |
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文ではない。