DO IF (IF)
DO IF-END IF 構造体は、1 つ以上の論理式に基づいて、ケースのサブセットに対して 1 つ以上の変換を条件付きで実行します。 DO IF の論理式が真でない場合、構造内で ELSE コマンドを使用して 1 つ以上の変換を実行できます。 構造内の ELSE
IF コマンドを使用すると、さらに制御を行うことができます。
DO IF [(]logical expression[)]
transformation commands
[ELSE IF [(]logical expression[)]]
transformation commands
[ELSE IF [(]logical expression[)]]
.
.
.
[ELSE]
transformation commands
END IF
このコマンドは、アクティブなデータ・セットを読み取りません。 これは保管され、データ・セットを読み取る次のコマンドで実行が保留されます。 詳しくは、トピック「 コマンドの順序 」を参照してください。
論理式では、以下の関係演算子を使用できます。
| 記号 | 定義 |
|---|---|
| EQ または = | 等しい |
| NE または ~ = または ¬ = または <> | 等しくない |
| LT または < | 次の値より小さい |
| LE または < = | 以下 |
| GT または > | より大きい |
| GE または> = | より大きいか等しい |
論理式では、以下の論理演算子を使用できます。
| 記号 | 定義 |
|---|---|
| AND または & | 両方の関係が真でなければなりません |
| OR または | | どちらの関係も真である可能性があります |
| NOT | 式の結果を反転します。 |
例
DO IF (YearHired GT 87).
COMPUTE Bonus = 0.
ELSE IF (Dept87 EQ 3).
COMPUTE Bonus = .1*Salary87.
ELSE IF (Dept87 EQ 1).
COMPUTE Bonus = .12*Salary87.
ELSE IF (Dept87 EQ 4).
COMPUTE Bonus = .08*Salary87.
ELSE IF (Dept87 EQ 2).
COMPUTE Bonus = .14*Salary87.
END IF.