5.7 Exit Statements
This Reference Manual output has not been verified, and may contain omissions or errors. Report any problems on the tracking issue
[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
2exit_statement
::=
exit [loop_name
] [when condition
];
Name Resolution Rules
3The loop_name
, if any, in an exit_statement
shall resolve to denote a loop_statement
.
Legality Rules
4Each 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
5For 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.
exit_statement
that names the outer loop. Examples
7Examples of loops with exit statements:
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;
9Main_Cycle:
loop
-- initial statements
exit Main_Cycle when Found;
-- final statements
end loop Main_Cycle;