Go to the first, previous, next, last section, table of contents.


5.7 Exit Statements

  1. An exit_statement is used to complete the execution of an enclosing loop_statement; the completion is conditional if the exit_statement includes a condition.

    Syntax

  2. exit_statement ::= exit [loop_name] [when condition];
    

    Name Resolution Rules

  3. The loop_name, if any, in an exit_statement shall resolve to denote a loop_statement.

    Legality Rules

  4. Each exit_statement applies to a loop_statement; this is the loop_statement being exited. An exit_statement with a name is only allowed within the loop_statement denoted by the name, and applies to that loop_statement. An exit_statement without a name is only allowed within a loop_statement, and applies to the innermost enclosing one. An exit_statement that applies to a given loop_statement shall not appear within a body or accept_statement, if this construct is itself enclosed by the given loop_statement.

    Dynamic Semantics

  5. For the execution of an exit_statement, the condition, if present, is first evaluated. If the value of the condition is True, or if there is no condition, a transfer of control is done to complete the loop_statement. If the value of the condition is False, no transfer of control takes place.

    NOTES

  6. (9) Several nested loops can be exited by an exit_statement that names the outer loop.

    Examples

  7. Examples of loops with exit statements:
  8. for N in 1 .. Max_Num_Items loop
       Get_New_Item(New_Item);
       Merge_Item(New_Item, Storage_File);
       exit when New_Item = Terminal_Item;
    end loop;
    
  9. Main_Cycle:
       loop
          --  initial statements
          exit Main_Cycle when Found;
          --  final statements
       end loop Main_Cycle;
    


Go to the first, previous, next, last section, table of contents.