The following example shows the simplest IF construct, an IF THEN statement with an END IF statement:
Form Example IF (expr) THEN IF (ABS(ADJU) .GE. 1.0E-6) THEN block TOTERR = TOTERR + ABS(ADJU) QUEST = ADJU/FNDVAL END IF END IF
This construct conditionally executes one statement block, which consists of all the statements between the IF THEN and the END IF statements.
The IF THEN statement first evaluates the logical expression e. If the value of e is true, the statement block is executed. If the value of e is false, control transfers to the next executable statement after the END IF statement, and the block is not executed.
The following example contains an IF construct with an ELSE IF THEN statement:
Form Example IF (expr) THEN IF (A .GT. B) THEN block1 D = B F = A - B ELSE IF (expr) THEN ELSE IF (A .GT. B/2.) THEN block2 D = B/2. F = A - B/2. END IF END IF
Block1 consists of all the statements between the IF THEN and the ELSE IF THEN statements. Block2 consists of all the statements between the ELSE IF THEN and the END IF statements.
If A is greater than B, block1 is executed. If A is not greater than B, but A is greater than B/2, block2 is executed. If A is not greater than B and A is not greater than B/2, neither block1 nor block2 is executed; control transfers directly to the next executable statement after the END IF statement.
The following example contains an IF construct with an ELSE statement:
Form Example IF (expr) THEN IF (NAME .LT. 'N') THEN block1 IFRONT = IFRONT + 1 FRLET(IFRONT) = NAME(1:2) ELSE ELSE block2 IBACK = IBACK + 1 END IF END IF
Block1 consists of all the statements between the IF THEN and ELSE statements. Block2 consists of all the statements between the ELSE and the END IF statements.
If the value of the character variable NAME is less than
'
N'
, block1 is executed. If the value
of NAME is greater than or equal to '
N'
,
block2 is executed.
The final example contains an IF construct with several ELSE IF THEN statements and an ELSE statement:
Form Example
IF (expr) THEN IF (A .GT. B) THEN
block1 D = B
F = A - B
ELSE IF (expr) THEN ELSE IF (A .GT. C) THEN
block2 D = C
F = A - C
ELSE IF (expr) THEN ELSE IF (A .GT. Z) THEN
block3 D = Z
F = A - Z
ELSE ELSE
block4 D = 0.0
F = A
END IF END IF
There are four statement blocks in this example, consisting of the following:
If A is greater than B, block1 is executed. If A is not greater than B but is greater than C, block2 is executed. If A is not greater than B or C but is greater than Z, block3 is executed. If A is not greater than B, C, or Z, block4 is executed.