repeat, again, exit

control structure

Syntax
repeat
   local-declaration*
   action*
   exit? condition?
again


Purpose

repeat is used to create a loop. All actions between repeat and again are repeated until the loop is terminated by an exit statement. Execution then resumes after the again.

A repeat loop constitutes a local scope, so local variables declared within the loop are local to the loop. In fact, they are local to each iteration of the loop, which means their values are re-initialized on each iteration. They are not, therefore, good candidates for creating exit conditions or maintaining data across iterations of the loop. In the following program, the output shows the value of "i" going up each time, but the value of "j" staying the same:

  process
     local integer i
     repeat
        local integer j
        output "i=%d(j) : j=%d(i)%n"
        increment i
        increment j
        exit when i > 20
     again

Within a function you can use return instead of exit to terminate a loop so that:

  function ...
     repeat
        ...
        exit when x > 5
     again
     return y
can be replaced by:
  function ...
     repeat
        ...
        return y when x > 5
     again