# IF-THEN-ELSE-END IF

The most general form of the IF-THEN-ELSE-END IF statement is the following:

```IF (logical-expression) THEN
statements-1
ELSE
statements-2
END IF
```
where statements-1 and statements-2 are sequences of executable statements, and logical-expression is a logical expression. The execution of this IF-THEN-ELSE-END IF statement goes as follows:
• the logical-expression is evaluated, yielding a logical value
• if the result is .TRUE., the statements in statements-1 are executed
• if the result is .FALSE., the statements in statements-2 are executed
• after finish executing statements in statements-1 or statements-2, the statement following END IF is executed.

### Examples

• The following code first reads in an integer into INTEGER variable Number. Then, if Number can be divided evenly by 2 (i.e., Number is a multiple of 2), the WRITE(*,*) between IF and ELSE is executed and shows that the number is even; otherwise, the WRITE(*,*) between ELSE and END IF is executed and shows that the number is odd. Function MOD(x,y) computes the remainder of x divided by y. This is the the remainder (or modulo) function
```INTEGER :: Number

IF (MOD(Number, 2) == 0) THEN
WRITE(*,*)  Number, ' is even'
ELSE
WRITE(*,*)  Number, ' is odd'
END IF
```
• The following program segment computes the absolute value of X and saves the result into variable Absolute_X. Recall that the absolute value of x is x if x is non-negative; otherwise, the absolute value is -x. For example, the absolute value of 5 is 5 and the absolute value of -4 is 4=-(-4). Also note that the WRITE(*,*) statement has been intentionally broken into two lines with the continuation line symbol &.
```REAL  :: X, Absolute_X

X = .....
IF (X >= 0.0) THEN
Absolute_X = X
ELSE
Absolute_X = -X
END IF
WRITE(*,*)  'The absolute value of ', x, &
' is ', Absolute_X
```
• The following program segment reads in two integer values into a and b and finds the smaller one into Smaller. Note that the WRITE(*,*) has also been broken into two lines.
```INTEGER  :: a, b, Smaller

IF (a <= b) THEN
Smaller = a
ELSE
Smaller = b
END IF
Write(*,*)  'The smaller of ', a, ' and ', &
b, ' is ', Smaller
```

### A Useful Tip

You may find the following way of organizing IF-THEN-ELSE-END IF very useful, especially when your program logic is reasonably complex.

Draw a rectangular box and a vertical line dividing the box into two parts. Then, write down the logical expression in the left part and draw a horizontal line dividing the right parts into two smaller ones. The upper rectangle is filled with what you want to do when the logical expression is .TRUE., while the lower rectangle is filled with what you want to do when the logical expression is .FALSE.:

 logical-expression what you want to do when the logical expression is .TRUE. what you want to do when the logical expression is .FALSE.

For example, the third example above has the following description:

 a <= b a is the smaller number b is the smaller number

Although this is an easy example, you will sense its power when you will be dealing with more complex problems.