4.1.3. Constructs

4.1.3.1. Conditional

Code

Meaning

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
else
    ! 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
    default
        ! 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
elsewhere
    ! block
end where

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

4.1.3.2. Iteration

Code

Meaning

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

do
    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

4.1.3.3. Statements

Code

Meaning

stop

Halts the program cleanly

stop 'message'

Halts the program cleanly displaying a message

return

Leaves a subroutine or function

exit

Leaves a loop

cycle

Next iteration

continue

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.