# if statement

The if statement tests the result of a logical expression. Depending
 on whether the expression evaluates to either true or false, the statements following the
 then or else clauses, respectively, are
 executed.

## Syntax

**Single-line format**

```
if logical.exp then statement.block
if logical.exp else statement.block
if logical.exp then statement.block else statement.block
```

 **Multi-line format**

 **Form 1**

```
if logical.exp then statements else
statements
.
.
end
```

 **Form 2**

```
if logical.exp then
statements
.
.
end else statements
```

 **Form 3**

```
if logical.exp then
statements
.
.
end else
statements
.
.end
```

 **Form 4**

```
if logical.exp else
statements
.
.
end
```

 **Form 5**

```
if logical.exp then
statements
.
.
end
```

## Parameter(s)

| logical.exp | Expression to be tested. If it evaluates to nonzero, it is considered true. If it evaluates to 0, it is false. |
| --- | --- |
| then statement.block | Executes the specified statements if the logical expression evaluates to nonzero. |
| else statement.block | Executes the specified statements if the logical expression evaluates to 0. |

## Description

Commands can be placed on a single line (single-line format) or in a block structure
 (multi-line format). The two formats are functionally identical.

- If more than one statement is contained in either the then or else clause, they must be separated by a semicolon.

- The single- and multi-line formats can be combined.

- If there is no clause for the current condition, the next sequential statement following the entire if statement is executed.

- The then clause of an if statement is optional if the else clause is present. However, one or the both must be present.

 Complex conditions can be tested by using the and and
 or connectives. Regardless of the complexity of the overall
 expression, each condition eventually evaluates to a simple true or false.

 NULL statements are often included in then or
 else clauses as placeholders. A NULL statement performs no action.
 However, you can use NULL statements to make the logic of a conditional more clear and
 easier to read.

 Note:
 This construction is not required. The then clause is not mandatory in
 an if statement, as long as an else clause
 exists.

 If the then clause is omitted, the statement would make sense to the
 compiler, but it might not be clear to the user. The NULL statement is used to make clear
 to the user that if the match returns a value of true, no action is taken.

 Many statements accommodate the
 then/else construct.
 More information is available at [then/else statement blocks](https://d3codex.com/pickbasic-flashbasic/then-else-statement-blocks/).

## Example(s)

**Example 1**

```
if answer = ’exit’ then stop
if answer = ’y’ then print ’ok’; cnt=cnt+1; goto 20
if answer = ’y’ then
 print ’ok’
 cnt=cnt+1
end
if answer = ’exit’ then gosub 100 else gosub 200
if answer = ’y’ then print ’ok’;cnt=cnt+1 else print ’no good’;stop
if answer = ’y’ then
 print ’ok’
 cnt=cnt+1
end else
 print ’no good’
end
```

 **Example 2**

 The following is an example testing if a value is
 numeric:
```
IF NUM(PRICE) THEN
 NULL
END ELSE
 PRINT "ERROR: NON-NUMERIC PRICE. STOP"
STOP
END
```

## See also

- [! logical operator](https://d3codex.com/pickbasic-flashbasic/exclamation-logical-operator/)
- [= assignment operator](https://d3codex.com/pickbasic-flashbasic/equals-assignment-operator/)
- [Boolean evaluation](https://d3codex.com/pickbasic-flashbasic/boolean-evaluation/)
- [Branching](https://d3codex.com/definitions/branching/)
- [case statement](https://d3codex.com/pickbasic-flashbasic/case-statement/)
- [else clause](https://d3codex.com/pickbasic-flashbasic/else-clause/)
- [ifr statement](https://d3codex.com/pickbasic-flashbasic/ifr-statement/)
- [Logical expressions](https://d3codex.com/pickbasic-flashbasic/logical-expressions/)
- [match relational operator](https://d3codex.com/pickbasic-flashbasic/match-relational-operator/)
- [not() function](https://d3codex.com/pickbasic-flashbasic/not-function/)
- [null statement](https://d3codex.com/pickbasic-flashbasic/null-statement/)
- [open statement](https://d3codex.com/pickbasic-flashbasic/open-statement/)
- [readnext statement](https://d3codex.com/pickbasic-flashbasic/readnext-statement/)
- [rewind statement](https://d3codex.com/pickbasic-flashbasic/rewind-statement/)
- [statement blocks](https://d3codex.com/pickbasic-flashbasic/statement-blocks/)
- [Statements and functions](https://d3codex.com/pickbasic-flashbasic/statements-and-functions/)
- [then/else statement blocks](https://d3codex.com/pickbasic-flashbasic/then-else-statement-blocks/)
- [writet statement](https://d3codex.com/pickbasic-flashbasic/writet-statement/)

---
Source: https://d3codex.com/pickbasic-flashbasic/if-statement/ - part of the D3Codex reference.
