6. Control statements

As conditional or control statements you have IF in many variants
(but essentially not changed from Fortran 77), DO (with some new
variants) and the completely new statement CASE.

The DO-loop
should now be ended with the statement END DO and we
no longer need any statement number. In addition, we can use the
statement EXIT to jump out of the DO-loop and
CYCLE in order to go to
the next iteration of the present DO-loop. A DO-loop can be assigned a
name, which is done by giving the name before the DO and
followed by a
colon. In addition the final END DO can be followed by the name of
the DO-loop.

In the example above, the execution of the inner loop will be
interrupted with a jump to the next cycle of the outer loop, and thus the
variable sum or SUMMA will not be increased, if X is greater than the
given table value. As soon as the sum is at least 17 the outer loop is
also interrupted.

If no name is given in the EXIT or CYCLE statements the present
inner loop is automatically used. With the present inner loop I mean
the one where the EXIT or CYCLE statements being executed are. These
statements then replace the GOTO to the final statement, which was
often used in the old DO-loop. This final statement usually was a
CONTINUE statement.

An IF statement can also be given a name. In that case the
corresponding END IF ought to be followed by that name.

A new construct in standard Fortran is CASE. It appeared, however,
in many Fortran dialects before. It can choose a suitable
case for a scalar argument of type INTEGER, LOGICAL
or CHARACTER. A
simple example is based on an integer IVAR.

It is not permitted with overlapping arguments. This means that one
single argument may not satisfy more than one of the cases of CASE.
The default case does not have to be included. If no valid case is
found the execution will continue with the first statement after the
END SELECT. I recommend that you include a DEFAULT
and then give an
error message if an argument has a not permitted value.

It is recommended to use the CASE instead of an assigned or
computed GOTO statement, or an arithmetic IF-statement.

Exercises

(6.1) Write a CASE-statement that performs three different calculations
depending on whether the variable is negative, zero or
any of the first odd prime numbers (3, 5, 7, 11, 13) and
performs nothing in all other cases.
Solution.

(6.2) Write a DO-loop that adds the square roots of 100 given
numbers, but skips negative numbers and concludes the addition
if the present value is zero.
Solution.