If...Then
 
Control flow statement for conditional branching

Syntax

If expression Then [statement(s)] [Else [statement(s)]] [End If]
or
If expression Then : [statement(s)] [Else [statement(s)]] : End If
or
If expression Then
[statement(s)]
[ ElseIf expression Then ]
[statement(s)]
[ Else ]
[statement(s)]
End If

Description

If...Then is a way to make decisions. It is a mechanism to execute code only if a condition is true, and can provide alternative code to execute based on more conditions.

expression can be one of several forms:
    • a conditional expression, for example:
x = 5
    • multiple conditions separated by logical bit-wise operators, for example:
x >= 5 And x <= 10
    • multiple conditions separated by logical short-circuit operators, for example:
y <> 0 AndAlso x \ y = 1
(in this case, "x \ y = 1" will only be evaluated if "y <> 0" is True)
    • any numerical expression, in which case a value of zero (0) represents False, and a non-zero value represents True

Both multi-line and single-line Ifs can be nested. In the latter case, the optional End Ifs can be useful to control where nested Ifs begin and end.

In the -lang fb and -lang fblite dialects, colons (:) can be used instead of newlines to construct multi-line If blocks on a single line.

Example

'' Here is a simple "guess the number" game using if...then for a decision.

Dim As Integer num, guess

Randomize
num = Int(Rnd * 10) + 1 'Create a random number between 1 and 10...
                
Print "guess the number between 1 and 10"

Do 'Start a loop

    Input "Guess"; guess 'Input a number from the user

    If guess > 10 OrElse guess < 1 Then  'The user's guess is out of range
        Print "The number can't be greater then 10 or less than 1!"
    ElseIf guess > num Then  'The user's guess is too high
        Print "Too high"
    ElseIf guess < num Then  'The user's guess is too low
        Print "Too low"
    ElseIf guess = num Then  'The user guessed the right number!
        Print "Correct!"
        Exit Do   'Exit the loop
    End If

Loop 'Go back to the start of the loop


Dialect Differences

  • In the -lang qb and -lang fblite dialects, variables declared inside an If..Then block have a procedure-wide scope as in QB
  • In the -lang fb and -lang deprecated dialects, variables declared inside an If..Then block are visible only inside the block, and cannot be accessed outside it.
  • In the -lang qb dialect, if there is a new line or a single-line comment (') directly after THEN, then the IF will be multi-line. A colon, a Rem or any other statement will result in a single-line IF.
  • In the -lang fb and -lang fblite dialects, if there is a new line, a single-line comment ('), a colon (:), or a Rem statement directly after THEN, then the IF will be multi-line. Any other statement will result in a single-line IF.

Differences from QB

  • END IF was not supported in single-line IFs in QBASIC.

See also