AS400/IBMi RPG COMP命令

IT関連

社内プログラムで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文ではない。

 

コメント

タイトルとURLをコピーしました