Contents Index Previous Next
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
{apply (to a loop_statement by
an exit_statement)} 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
{execution (exit_statement)
[partial]} 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.
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;
Contents Index Previous Next Legal