If…Then…Else…EndIf

指定された条件分岐にしたがって命令を実行します。

書式
(1) If条件式 Then
ステートメントT1
.
.
[ElseIf 条件式 Then]
ステートメントT1
.
.
[Else]
ステートメントF1
.
.
EndIf

(2) If 条件式 Then ステートメントT1 [;ステートメントT2...] [Else ステートメントF1 [;ステートメントF2...]]

パラメーター

条件式
真偽値 (True/Falseの値)が戻る有効な条件式です。真 (True)の場合は"0"以外の数値を、偽 (False)の場合は、"0"を返します。 (下記の条件式例を参照してください。)
ステートメントT1
条件式の値が真 (True)のとき、つまり、条件が満たされたときに実行されます。 (複数のステートメントをIf...Then...Else形式のブロックの中に記述できます。)
ステートメントF1
条件式の値が偽 (False)のとき、つまり、条件が満たされなかったときに実行されます。(複数のステートメントをIf...Then...Else形式のブロックの中に記述できます。)

解説
(1) If...Then...Else は、条件が満たされたときにステートメントT1以降を実行します。条件が満たされなかったときは、ステートメントF1以降を実行します。If...Then...Else命令のElse部分は省略可能です。Else部分を省略し、条件が満たされなかったときは、EndIf以降のステートメントが実行されます。If...Then...Else ステートメントのブロックは、Elseの有無にかかわらず、EndIfで閉じてください。

(2) If...Then...Elseは、ブロック以外の形式で用いることも可能です。If...Then...Elseのステートメントをすべて同じ行に記述する方法です。この方法でIf...Then...Elseを用いる場合には、EndIfは必要ではありません。この行で記述されている条件式が満たされれば (条件式に対して真値 (True)であれば)、ThenとElse間のステートメントが実行されます。条件式が満たされなければ (条件式に対して偽値 (False)であれば)、Elseに続くステートメントが実行されます。If...Then...ElseのElse部分は必須ではありません。条件式が満たされない場合 (条件式に対して偽値 (False)の場合)でElseキーワードがなければ、制御はプログラム中の次のステートメントに移行します。

注意


  • 条件式サンプル

    • a = b: aとbが等しい
    • a < b: aがbより小さい
    • a >= b: aがbより大きいかまたは等しい
    • a <> b: aとbが等しくない
    • a > b: aがbより大きい
    • a <= b: aがbより小さいかまたは等しい

    論理演算子And, Or, Xorなども使うことができます。

  • 条件式にTrueを使用する場合

    定数 Trueの値は-1ですが、Boolean型なので、他の型の変数との比較条件に使用する場合注意が必要です。

    Function main
      Integer i
      i = 3
      If i = True Then
        Print "i=TRUE"
      EndIf
    Fend
    

    上記プログラムを実行すると "i=TRUE"が表示されます。これは、Boolean型を含む条件判定は、"0"か"非0"かで行われるためです。

    "i"の値が"0"でない場合は条件成立と判定され表示が行われます。プロジェクトプロパティ>コンパイラーで「変数型チェック」を有効にすると、コンパイル時にBoolean型と数式との比較をエラーとして検出できます。


参照
Select...Case, Do…Loop

If/Then/Else使用例
[1行のIf...Then...Else]

下記例は、特定の出力のオンオフを決定するために、入力をチェックする簡単な例です。このようなタスクは、常に動かしておくI/Oタスクなどに使用します。

Function main
    Do
       If Sw(0) = 1 Then On 1 Else Off 1
    Loop
Fend

[ブロック形式のIf...Then...Else]

下記は、いくつかの入力をチェックして、その入力の状態を出力する簡単な例です。

If Sw(0) = 1 Then Print "Input0 ON" Else Print "Input0 OFF"
'
If Sw(1) = 1 Then
    If Sw(2) = 1 Then
       Print "Input1 On and Input2 ON"
    Else
       Print "Input1 On and Input2 OFF"
    EndIf
Else
    If Sw(2) = 1 Then
       Print "Input1 Off and Input2 ON"
    Else
       Print "Input1 Off and Input2 OFF"
    EndIf
EndIf

[その他の書式の例]

If x = 10 And y = 3 Then GoTo Label50
If test <= 10 Then Print "Test Failed"
If Sw(0) = 1 Or Sw(1) = 1 Then Print "Everything OK"