Another important control structure in Fortran is the `IF` statement
which allows a block of statements to be executed conditionally,
or allows a choice to be made between different courses of action.

One obvious defect of the function `AREA3` is that has no
protection against incorrect input. Many sets of three real numbers
could not possibly form the sides of a triangle, for example 1.0,
2.0, and 7.0. A little analysis shows that in all such impossible
cases the argument of the square root function will be negative,
which is illegal. Fortran systems should detect errors like this at
run-time but will vary in their response. Even so, a message like
"negative argument for square-root" may not be enough to suggest
to the user what is wrong. The next version of the function is
slightly more user-friendly:

REAL FUNCTION AREA3(A, B, C) *Computes the area of a triangle from lengths of its sides. *If arguments are invalid issues error message and returns zero. REAL A, B, C S = (A + B + C)/2.0 FACTOR = S * (S-A) * (S-B) * (S-C) IF(FACTOR .LE. 0.0) THEN WRITE(UNIT=*, FMT=*)'Impossible triangle', A, B, C AREA3 = 0.0 ELSE AREA3 = SQRT(FACTOR) END IF ENDThe

With this modification, the value of `FACTOR` is tested and if it is
negative or zero then an error message is produced; `AREA`3 is also
set to an impossible value (zero) to flag the mistake. Note that the
form ```.LE.`'' is used because the less-than-or-equals character,
```<`", is not present in the Fortran character set. If `S` is
positive the calculation proceeds as before.