FORTRAN 77 Language Reference

IF (Block)

The block IF statement executes one of two or more sequences of statements, depending on the value of a logical expression.

IF (e) THEN

END IF

Parameter 

Description 

e

A logical expression  

Description

The block IF statement evaluates a logical expression and, if the logical expression is true, it executes a set of statements called the IF block. If the logical expression is false, control transfers to the next ELSE, ELSE IF, or END IF statement at the same IF-level.

IF Level

The IF level of a statement S is the value n1-n2, where n1 is the number of block IF statements from the beginning of the program unit up to the end, including S; n2 is the number of END IF statements in the program unit up to, but not including, S.

Example: In the following program, the IF-level of statement 9 is 2-1, or, 1


       IF ( X .LT. 0.0 ) THEN 
              MIN = NODE 
       END IF 
       ... 
9      IF ( Y .LT. 0.0 ) THEN 
              MIN = NODE - 1 
       END IF 

:

The IF-level of every statement must be zero or positive. The IF-level of each block IF, ELSE IF, ELSE, and END IF statement must be positive. The IF-level of the END statement of each program unit must be zero.

IF Block

An IF block consists of all the executable statements following the block IF statement, up to, but not including, the next ELSE, ELSE IF, or END IF statement that has the same if level as the block IF statement. An IF block can be empty. In the following example, the two assignment statements form an IF block:


       IF ( X .LT. Y ) THEN 
              M = 0 
              N = N+1 
       END IF

Execution proceeds as follows:

  1. The logical expression e is evaluated first. If e is true, execution continues with the first statement of the IF block.

  2. If e is true and the IF block is empty, control is transferred to the next END IF statement with the same IF level as the block IF statement.

  3. If e is false, control is transferred to the next ELSE IF, ELSE, or END IF statement with the same IF level as the block IF statement.

  4. If the last statement of the IF block does not result in a branch to a label, control is transferred to the next END IF statement that has the same IF level as the block IF statement preceding the IF block.

Restrictions

Control cannot jump into an IF block from outside the IF block.

Examples

Example 1: IF-THEN-ELSE:


       IF ( L ) THEN 
              N=N+1 
              CALL CALC 
       ELSE 
              K=K+1 
              CALL DISP 
       END IF 

Example 2: IF-THEN-ELSE-IF with ELSE-IF:


       IF ( C .EQ. 'a' ) THEN 
              NA=NA+1 
              CALL APPEND 
       ELSE IF ( C .EQ. 'b' ) THEN 
              NB=NB+1 
              CALL BEFORE 
       ELSE IF ( C .EQ. 'c' ) THEN 
              NC=NC+1 
              CALL CENTER 
       END IF

Example 3: Nested IF-THEN-ELSE:


       IF ( PRESSURE .GT 1000.0 ) THEN 
              IF ( N .LT. 0.0 ) THEN 
                     X = 0.0 
                     Y = 0.0 
              ELSE 
                     Z = 0.0 
              END IF 
       ELSE IF ( TEMPERATURE .GT. 547.0 ) THEN 
              Z = 1.0 
       ELSE 
              X = 1.0 
              Y = 1.0 
       END IF