File: AA-5-1.html

package info (click to toggle)
ada-reference-manual 20021112web-3
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, sarge
  • size: 18,652 kB
  • ctags: 8,921
  • sloc: makefile: 52; sh: 20
file content (282 lines) | stat: -rw-r--r-- 23,714 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
    <TITLE>AARM95 - Simple and Compound Statements - Sequences of Statements</TITLE>
    <META NAME="Author" CONTENT="JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor">
    <META NAME="GENERATOR" CONTENT="Arm_Form.Exe, Ada Reference Manual generator">
    <STYLE type="text/css">
    DIV.paranum {position: absolute; font-family: Arial, Helvetica, sans-serif; left: 0.5 em; top: auto}
    TT {font-family: "Courier New", monospace}
    DT {display: compact}
    DIV.Normal {font-family: "Times New Roman", Times, serif; margin-bottom: 0.6em}
    DIV.Wide {font-family: "Times New Roman", Times, serif; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Annotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.WideAnnotations {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0.6em; margin-bottom: 0.6em}
    DIV.Index {font-family: "Times New Roman", Times, serif}
    DIV.SyntaxSummary {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Notes {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.NotesHeader {font-family: "Times New Roman", Times, serif; margin-left: 2.0em}
    DIV.SyntaxIndented {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-bottom: 0.4em}
    DIV.Indented {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-bottom: 0.6em}
    DIV.CodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-bottom: 0.6em}
    DIV.SmallIndented {font-family: "Times New Roman", Times, serif; margin-left:  10.0em; margin-bottom: 0.6em}
    DIV.SmallCodeIndented {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.Examples {font-family: "Courier New", monospace; margin-left: 2.0em; margin-bottom: 0.6em}
    DIV.SmallExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left: 7.5em; margin-bottom: 0.6em}
    DIV.IndentedExamples {font-family: "Courier New", monospace; margin-left: 8.0em; margin-bottom: 0.6em}
    DIV.SmallIndentedExamples {font-family: "Courier New", monospace; font-size: 80%; margin-left:  15.0em; margin-bottom: 0.6em}
    UL.Bulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SmallNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.IndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.CodeIndentedNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.SyntaxIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    UL.NotesNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.Hanging {font-family: "Times New Roman", Times, serif; margin-top: 0em; margin-bottom: 0.6em}
    DD.Hanging {margin-left: 6.0em}
    DL.IndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.IndentedHanging {margin-left: 2.0em}
    DL.HangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.HangingInBulleted {margin-left: 4.0em}
    DL.SmallHanging {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallHanging {margin-left: 7.5em}
    DL.SmallIndentedHanging {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-top: 0em; margin-bottom: 0.6em}
    DD.SmallIndentedHanging {margin-left: 2.0em}
    DL.SmallHangingInBulleted {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallHangingInBulleted {margin-left: 5.0em}
    DL.Enumerated {font-family: "Times New Roman", Times, serif; margin-right: 0.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.Enumerated {margin-left: 2.0em}
    DL.SmallEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em}
    DD.SmallEnumerated {margin-left: 2.5em}
    DL.NestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 2.0em; margin-right: 2.0em; margin-top: 0em; margin-bottom: 0.5em}
    DL.SmallNestedEnumerated {font-family: "Times New Roman", Times, serif; margin-left: 6.0em; margin-right: 6.0em; margin-top: 0em; margin-bottom: 0.5em}
    </STYLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFF0" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-5.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-5-2.html">Next</A></P>
<HR>
<H1> 5.1 Simple and Compound Statements - Sequences of Statements</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;[A <FONT FACE="Arial, Helvetica">statement</FONT>
is either simple or compound. A <FONT FACE="Arial, Helvetica">simple_statement</FONT>
encloses no other <FONT FACE="Arial, Helvetica">statement</FONT>. A <FONT FACE="Arial, Helvetica">compound_statement</FONT>
can enclose <FONT FACE="Arial, Helvetica">simple_statement</FONT>s and
other <FONT FACE="Arial, Helvetica">compound_statement</FONT>s.] </DIV>

<H4 ALIGN=CENTER>Syntax</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">sequence_of_statements<A NAME="I2884"></A>
::= </FONT><A NAME="I2885"></A><FONT FACE="Arial, Helvetica">statement</FONT>&nbsp;{<A NAME="I2886"></A><FONT FACE="Arial, Helvetica">statement</FONT>}</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">statement<A NAME="I2887"></A>
::= </FONT><BR>
&nbsp;&nbsp;&nbsp;{<A NAME="I2888"></A><FONT FACE="Arial, Helvetica">label</FONT>}&nbsp;<A NAME="I2889"></A><FONT FACE="Arial, Helvetica">simple_statement</FONT>&nbsp;|&nbsp;{<A NAME="I2890"></A><FONT FACE="Arial, Helvetica">label</FONT>}&nbsp;<A NAME="I2891"></A><FONT FACE="Arial, Helvetica">compound_statement</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">simple_statement<A NAME="I2892"></A>
::= </FONT><A NAME="I2893"></A><FONT FACE="Arial, Helvetica">null_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2894"></A><FONT FACE="Arial, Helvetica">assignment_statement</FONT>&nbsp;|&nbsp;<A NAME="I2895"></A><FONT FACE="Arial, Helvetica">exit_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2896"></A><FONT FACE="Arial, Helvetica">goto_statement</FONT>&nbsp;|&nbsp;<A NAME="I2897"></A><FONT FACE="Arial, Helvetica">procedure_call_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2898"></A><FONT FACE="Arial, Helvetica">return_statement</FONT>&nbsp;|&nbsp;<A NAME="I2899"></A><FONT FACE="Arial, Helvetica">entry_call_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2900"></A><FONT FACE="Arial, Helvetica">requeue_statement</FONT>&nbsp;|&nbsp;<A NAME="I2901"></A><FONT FACE="Arial, Helvetica">delay_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2902"></A><FONT FACE="Arial, Helvetica">abort_statement</FONT>&nbsp;|&nbsp;<A NAME="I2903"></A><FONT FACE="Arial, Helvetica">raise_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2904"></A><FONT FACE="Arial, Helvetica">code_statement</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">compound_statement<A NAME="I2905"></A>
::= </FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I2906"></A><FONT FACE="Arial, Helvetica">if_statement</FONT>&nbsp;|&nbsp;<A NAME="I2907"></A><FONT FACE="Arial, Helvetica">case_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2908"></A><FONT FACE="Arial, Helvetica">loop_statement</FONT>&nbsp;|&nbsp;<A NAME="I2909"></A><FONT FACE="Arial, Helvetica">block_statement</FONT><BR>
&nbsp;&nbsp;&nbsp;|&nbsp;<A NAME="I2910"></A><FONT FACE="Arial, Helvetica">accept_statement</FONT>&nbsp;|&nbsp;<A NAME="I2911"></A><FONT FACE="Arial, Helvetica">select_statement</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">null_statement<A NAME="I2912"></A>
::= </FONT><B>null</B>;</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">label<A NAME="I2913"></A>
::= </FONT>&lt;&lt;<I>label_</I><A NAME="I2914"></A><FONT FACE="Arial, Helvetica">statement_identifier</FONT>&gt;&gt;</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">statement_identifier<A NAME="I2915"></A>
::= </FONT><A NAME="I2916"></A><FONT FACE="Arial, Helvetica">direct_name</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="SyntaxIndented">The <FONT FACE="Arial, Helvetica">direct_name</FONT>
of a <FONT FACE="Arial, Helvetica">statement_identifier</FONT> shall
be an <FONT FACE="Arial, Helvetica">identifier</FONT> (not an <FONT FACE="Arial, Helvetica">operator_symbol</FONT>).
</DIV>

<H4 ALIGN=CENTER>Name Resolution Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;The <FONT FACE="Arial, Helvetica">direct_name</FONT>
of a <FONT FACE="Arial, Helvetica">statement_identifier</FONT> shall
resolve to denote its corresponding implicit declaration (see below).
</DIV>

<H4 ALIGN=CENTER>Legality Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;Distinct <FONT FACE="Arial, Helvetica">identifiers</FONT>
shall be used for all <FONT FACE="Arial, Helvetica">statement_identifier</FONT>s
that appear in the same body, including inner <FONT FACE="Arial, Helvetica">block_statement</FONT>s
but excluding inner program units. </DIV>

<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>12</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;For each <FONT FACE="Arial, Helvetica">statement_identifier</FONT>,
there is an implicit declaration (with the specified <FONT FACE="Arial, Helvetica">identifier</FONT>)
at the end of the <FONT FACE="Arial, Helvetica">declarative_part</FONT>
of the innermost <FONT FACE="Arial, Helvetica">block_statement</FONT>
or body that encloses the <FONT FACE="Arial, Helvetica">statement_identifier</FONT>.
The implicit declarations occur in the same order as the <FONT FACE="Arial, Helvetica">statement_identifier</FONT>s
occur in the source text. If a usage name denotes such an implicit declaration,
the entity it denotes is the <FONT FACE="Arial, Helvetica">label</FONT>,
<FONT FACE="Arial, Helvetica">loop_statement</FONT>, or <FONT FACE="Arial, Helvetica">block_statement</FONT>
with the given <FONT FACE="Arial, Helvetica">statement_identifier</FONT>.
</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>We talk in terms
of individual <FONT FACE="Arial, Helvetica">statement_identifiers</FONT>
here rather than in terms of the corresponding statements, since a given
<FONT FACE="Arial, Helvetica">statement</FONT> may have multiple <FONT FACE="Arial, Helvetica">statement_identifier</FONT>s.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>A <FONT FACE="Arial, Helvetica">block_statement</FONT>
that has no explicit <FONT FACE="Arial, Helvetica">declarative_part</FONT>
has an implicit empty <FONT FACE="Arial, Helvetica">declarative_part</FONT>,
so this rule can safely refer to the <FONT FACE="Arial, Helvetica">declarative_part</FONT>
of a <FONT FACE="Arial, Helvetica">block_statement</FONT>.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The scope of a declaration starts
at the place of the declaration itself (see <A HREF="AA-8-2.html">8.2</A>).
In the case of a label, loop, or block name, it follows from this rule
that the scope of the implicit declaration starts before the first explicit
occurrence of the corresponding name, since this occurrence is either
in a statement label, a <FONT FACE="Arial, Helvetica">loop_statement</FONT>,
a <FONT FACE="Arial, Helvetica">block_statement</FONT>, or a <FONT FACE="Arial, Helvetica">goto_statement</FONT>.
An implicit declaration in a <FONT FACE="Arial, Helvetica">block_statement</FONT>
may hide a declaration given in an outer program unit or <FONT FACE="Arial, Helvetica">block_statement</FONT>
(according to the usual rules of hiding explained in <A HREF="AA-8-3.html">8.3</A>).</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The syntax rule for <FONT FACE="Arial, Helvetica">label</FONT>
uses <FONT FACE="Arial, Helvetica">statement_identifier</FONT> which
is a <FONT FACE="Arial, Helvetica">direct_name</FONT> (not a <FONT FACE="Arial, Helvetica">defining_identifier</FONT>),
because labels are implicitly declared. The same applies to loop and
block names. In other words, the <FONT FACE="Arial, Helvetica">label</FONT>
itself is not the defining occurrence; the implicit declaration is.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.e</FONT></DIV>
<DIV Class="Annotations" Style="margin-bottom: 0.4em"><FONT SIZE=-1>We
cannot consider the <FONT FACE="Arial, Helvetica">label</FONT> to be
a defining occurrence. An example that can tell the difference is this:
</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.f</FONT></DIV>
<DIV Class="SmallExamples"><TT><B>declare</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;--<I>&nbsp;Label&nbsp;Foo&nbsp;is&nbsp;implicitly&nbsp;declared&nbsp;here.</I><BR>
<B>begin</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<B>for</B>&nbsp;Foo&nbsp;<B>in</B>&nbsp;...&nbsp;<B>loop</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;Foo&gt;&gt;&nbsp;--<I>&nbsp;Illegal.</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;<B>loop</B>;<BR>
<B>end</B>;<BR>
&nbsp;&nbsp;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.g</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The label in this example is hidden
from itself by the loop parameter with the same name; the example is
illegal. We considered creating a new syntactic category name, separate
from <FONT FACE="Arial, Helvetica">direct_name</FONT> and <FONT FACE="Arial, Helvetica">selector_name</FONT>,
for use in the case of statement labels. However, that would confuse
the rules in Section 8, so we didn't do it. </FONT></DIV>

<H4 ALIGN=CENTER>Dynamic Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I2917"></A>The execution of a <FONT FACE="Arial, Helvetica">null_statement</FONT>
has no effect.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I2918"></A>A <I>transfer of control</I>
is the run-time action of an <FONT FACE="Arial, Helvetica">exit_statement</FONT>,
<FONT FACE="Arial, Helvetica">return_statement</FONT>, <FONT FACE="Arial, Helvetica">goto_statement</FONT>,
or <FONT FACE="Arial, Helvetica">requeue_statement</FONT>, selection
of a <FONT FACE="Arial, Helvetica">terminate_alternative</FONT>, raising
of an exception, or an abort, which causes the next action performed
to be one other than what would normally be expected from the other rules
of the language. [As explained in <A HREF="AA-7-6-1.html">7.6.1</A>,
a transfer of control can cause the execution of constructs to be completed
and then left, which may trigger finalization.]</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I2919"></A>The execution of a <FONT FACE="Arial, Helvetica">sequence_of_statements</FONT>
consists of the execution of the individual <FONT FACE="Arial, Helvetica">statement</FONT>s
in succession until the <FONT FACE="Arial, Helvetica">sequence_</FONT>
is completed. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>It could
be completed by reaching the end of it, or by a transfer of control.
</FONT></DIV>
<DIV Class="NotesHeader"><FONT SIZE=-1>NOTES</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>1&nbsp;&nbsp;A <FONT FACE="Arial, Helvetica">statement_identifier</FONT>
that appears immediately within the declarative region of a named <FONT FACE="Arial, Helvetica">loop_statement</FONT>
or an <FONT FACE="Arial, Helvetica">accept_statement</FONT> is nevertheless
implicitly declared immediately within the declarative region of the
innermost enclosing body or <FONT FACE="Arial, Helvetica">block_statement</FONT>;
in other words, the expanded name for a named statement is not affected
by whether the statement occurs inside or outside a named loop or an
<FONT FACE="Arial, Helvetica">accept_statement</FONT> -- only nesting
within <FONT FACE="Arial, Helvetica">block_statement</FONT>s is relevant
to the form of its expanded name. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.a</FONT></DIV>
<DIV Class="Annotations" Style="margin-bottom: 0.4em"><FONT SIZE=-1><B>Discussion:
</B>Each comment in the following example gives the expanded name associated
with an entity declared in the task body: </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.b</FONT></DIV>
<DIV Class="SmallExamples"><TT><B>task&nbsp;body</B>&nbsp;Compute&nbsp;<B>is</B><BR>
&nbsp;&nbsp;&nbsp;Sum&nbsp;:&nbsp;Integer&nbsp;:=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Sum</I><BR>
<B>begin</B><BR>
&nbsp;Outer:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Outer</I><BR>
&nbsp;&nbsp;&nbsp;<B>for</B>&nbsp;I&nbsp;<B>in</B>&nbsp;1..10&nbsp;<B>loop</B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Outer.I</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;Blk:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Blk</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>declare</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sum&nbsp;:&nbsp;Integer&nbsp;:=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Blk.Sum</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>begin</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>accept</B>&nbsp;Ent(I&nbsp;:&nbsp;out&nbsp;Integer;&nbsp;J&nbsp;:&nbsp;in&nbsp;Integer)&nbsp;<B>do</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Ent.I,&nbsp;Compute.Ent.J</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute.Ent.I&nbsp;:=&nbsp;Compute.Outer.I;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inner:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Blk.Inner</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>for</B>&nbsp;J&nbsp;<B>in</B>&nbsp;1..10&nbsp;<B>loop</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<I>--&nbsp;Compute.Blk.Inner.J</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sum&nbsp;:=&nbsp;Sum&nbsp;+&nbsp;Compute.Blk.Inner.J&nbsp;*&nbsp;Compute.Ent.J;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>end&nbsp;loop</B>&nbsp;Inner;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;Ent;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compute.Sum&nbsp;:=&nbsp;Compute.Sum&nbsp;+&nbsp;Compute.Blk.Sum;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;Blk;<BR>
&nbsp;&nbsp;&nbsp;<B>end&nbsp;loop</B>&nbsp;Outer;<BR>
&nbsp;&nbsp;&nbsp;Record_Result(Sum);<BR>
<B>end</B>&nbsp;Compute;</TT></DIV>

<H4 ALIGN=CENTER>Examples</H4>
<DIV Class="Paranum"><FONT SIZE=-2>17</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em">&nbsp;&nbsp;&nbsp;&nbsp;<I>Examples of
labeled statements:</I> </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>18</FONT></DIV>
<DIV Class="Examples"><TT>&lt;&lt;Here&gt;&gt;&nbsp;&lt;&lt;Ici&gt;&gt;&nbsp;&lt;&lt;Aqui&gt;&gt;&nbsp;&lt;&lt;Hier&gt;&gt;&nbsp;<B>null</B>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>19</FONT></DIV>
<DIV Class="Examples"><TT>&lt;&lt;After&gt;&gt;&nbsp;X&nbsp;:=&nbsp;1;</TT></DIV>

<H4 ALIGN=CENTER>Extensions to Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>19.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><A NAME="I2920"></A>The <FONT FACE="Arial, Helvetica">requeue_statement</FONT>
is new. </FONT></DIV>

<H4 ALIGN=CENTER>Wording Changes from Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>19.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We define the syntactic category
<FONT FACE="Arial, Helvetica">statement_identifier</FONT> to simplify
the description. It is used for labels, loop names, and block names.
We define the entity associated with the implicit declarations of statement
names.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>19.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Completion includes completion
caused by a transfer of control, although RM83-5.1(6) did not take this
view. </FONT></DIV>

<HR>
<P><A HREF="AA-TOC.html">Contents</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-0-29.html">Index</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-5.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-5-2.html">Next</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>