4.1.3. Constructs Conditional



if (expression) action

One logical condition expressible as an action (e.g. print) or on a single line (e.g. x = a) i.e. no multi-line blocks are allowed

if (expression) then
    ! block
else if (expression) then
    ! block
    ! block
end if

Multiple logical conditions

block_a: if (expression) then
    ! block
else if (expression) then block_a
    block_b: if (expression) then
        ! block
    end if block_b
else then block_a
    ! block
end if block_a

Named Blocks for nested blocks

select case(number)
    case (:0)
        ! block
    case (1:2)
        ! block
    case (3)
        ! block
    case (4:)
        ! block
        ! block
end select

Select - choose an action depending on the value of number (an integer)

  • case (:0) \(\Rightarrow\) number is \(\le\) 0

  • case (1:2) \(\Rightarrow\) number is 1 or 2

  • case(3) \(\Rightarrow\) number is 3

  • case(4:) \(\Rightarrow\) number is \(\ge\) 4

  • default \(\Rightarrow\) number is none of the above

where (mask expression)
    ! block
    ! block
end where

Where - useful for iterating through arrays with a conditional statement without using a loop Iteration



do i = i_start, i_stop, i_step
    ! block
end do

Iterator - loops with an integer counter until stop is reached

do while (expression)
    ! block
end do

Do-While - loops with condition tested at start

    if (expression) exit
        ! block
end do

Blank Do - loops without condition until the if statement is true

outer: do
    inner: do i = i_start, i_stop, i_step
         if (expression) cycle inner
             ! block
         if (expression) exit outer
             ! block
    end do inner
end do outer

Nested Do - contains outer and inner loops

  • outer: do \(\Rightarrow\) Outer “blank” do loop

  • inner: do i = start, stop, step \(\Rightarrow\) Inner “iterator” do loop

  • if (expression) cycle inner \(\Rightarrow\) Repeat inner loop according to expression

  • if (expression) exit outer \(\Rightarrow\) Exit outer loop according to expression

  • Notice the use of named loops to distinguish between them, i.e. “outer” and “inner” are names of loops Statements




Halts the program cleanly

stop 'message'

Halts the program cleanly displaying a message


Leaves a subroutine or function


Leaves a loop


Next iteration


Used in a do loop, which would otherwise end in an if (archaic)

go to 100

Jumps to the specified statement number (archaic). The number it refers to must be within columns 1 - 5.