File: AA-7-2.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 (224 lines) | stat: -rw-r--r-- 17,797 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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
    <TITLE>AARM95 - Package Bodies</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-7-1.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-7-3.html">Next</A></P>
<HR>
<H1> 7.2 Package Bodies</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;[In contrast to the entities declared in the visible
part of a package, the entities declared in the <FONT FACE="Arial, Helvetica">package_body</FONT>
are visible only within the <FONT FACE="Arial, Helvetica">package_body</FONT>
itself. As a consequence, a package with a <FONT FACE="Arial, Helvetica">package_body</FONT>
can be used for the construction of a group of related subprograms in
which the logical operations available to clients are clearly isolated
from the internal entities.] </DIV>

<H4 ALIGN=CENTER>Syntax</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">package_body<A NAME="I3205"></A>
::= </FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<B>package</B>&nbsp;<B>body</B>&nbsp;<A NAME="I3206"></A><FONT FACE="Arial, Helvetica">defining_program_unit_name</FONT>&nbsp;<B>is</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I3207"></A><FONT FACE="Arial, Helvetica">declarative_part</FONT><BR>
&nbsp;&nbsp;&nbsp;[<B>begin</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A NAME="I3208"></A><FONT FACE="Arial, Helvetica">handled_sequence_of_statements</FONT>]<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;[[<A NAME="I3209"></A><FONT FACE="Arial, Helvetica">parent_unit_name</FONT>.]<A NAME="I3210"></A><FONT FACE="Arial, Helvetica">identifier</FONT>];</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="SyntaxIndented">If an <FONT FACE="Arial, Helvetica">identifier</FONT>
or <FONT FACE="Arial, Helvetica">parent_unit_name</FONT>.<FONT FACE="Arial, Helvetica">identifier</FONT>
appears at the end of a <FONT FACE="Arial, Helvetica">package_body</FONT>,
then this sequence of lexical elements shall repeat the <FONT FACE="Arial, Helvetica">defining_program_unit_name</FONT>.
</DIV>

<H4 ALIGN=CENTER>Legality Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;A <FONT FACE="Arial, Helvetica">package_body</FONT>
shall be the completion of a previous <FONT FACE="Arial, Helvetica">package_declaration</FONT>
or <FONT FACE="Arial, Helvetica">generic_package_declaration</FONT>.
A library <FONT FACE="Arial, Helvetica">package_declaration</FONT> or
library <FONT FACE="Arial, Helvetica">generic_package_declaration</FONT>
shall not have a body unless it requires a body[; <B>pragma</B> Elaborate_Body
can be used to require a <FONT FACE="Arial, Helvetica">library_unit_declaration</FONT>
to have a body (see <A HREF="AA-10-2-1.html">10.2.1</A>) if it would
not otherwise require one]. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>The first
part of the rule forbids a <FONT FACE="Arial, Helvetica">package_body</FONT>
from standing alone -- it has to belong to some previous <FONT FACE="Arial, Helvetica">package_declaration</FONT>
or <FONT FACE="Arial, Helvetica">generic_package_declaration</FONT>.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>A nonlibrary <FONT FACE="Arial, Helvetica">package_declaration</FONT>
or nonlibrary <FONT FACE="Arial, Helvetica">generic_package_declaration</FONT>
that does not require a completion may have a corresponding body anyway.
</FONT></DIV>

<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;In any <FONT FACE="Arial, Helvetica">package_body</FONT>
without <FONT FACE="Arial, Helvetica">statement</FONT>s there is an implicit
<FONT FACE="Arial, Helvetica">null_statement</FONT>. For any <FONT FACE="Arial, Helvetica">package_declaration</FONT>
without an explicit completion, there is an implicit <FONT FACE="Arial, Helvetica">package_body</FONT>
containing a single <FONT FACE="Arial, Helvetica">null_statement</FONT>.
For a noninstance, nonlibrary package, this body occurs at the end of
the <FONT FACE="Arial, Helvetica">declarative_part</FONT> of the innermost
enclosing program unit or <FONT FACE="Arial, Helvetica">block_statement</FONT>;
if there are several such packages, the order of the implicit <FONT FACE="Arial, Helvetica">package_bodies</FONT>
is unspecified. <A NAME="I3211"></A>[(For an instance, the implicit <FONT FACE="Arial, Helvetica">package_body</FONT>
occurs at the place of the instantiation (see <A HREF="AA-12-3.html">12.3</A>).
For a library package, the place is partially determined by the elaboration
dependences (see Section 10).)] </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>Thus, for example,
we can refer to something happening just after the <B>begin</B> of a
<FONT FACE="Arial, Helvetica">package_body</FONT>, and we can refer to
the <FONT FACE="Arial, Helvetica">handled_sequence_of_statements</FONT>
of a <FONT FACE="Arial, Helvetica">package_body</FONT>, without worrying
about all the optional pieces. The place of the implicit body makes a
difference for tasks activated by the package. See also RM83-9.3(5).</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The implicit body would be illegal
if explicit in the case of a library package that does not require (and
therefore does not allow) a body. This is a bit strange, but not harmful.
</FONT></DIV>

<H4 ALIGN=CENTER>Dynamic Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="Normal">&nbsp;&nbsp;&nbsp;<A NAME="I3212"></A>For the elaboration of a nongeneric
<FONT FACE="Arial, Helvetica">package_body</FONT>, its <FONT FACE="Arial, Helvetica">declarative_part</FONT>
is first elaborated, and its <FONT FACE="Arial, Helvetica">handled_sequence_of_statements</FONT>
is then executed. </DIV>
<DIV Class="NotesHeader"><FONT SIZE=-1>NOTES</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>3&nbsp;&nbsp;A variable declared in
the body of a package is only visible within this body and, consequently,
its value can only be changed within the <FONT FACE="Arial, Helvetica">package_body</FONT>.
In the absence of local tasks, the value of such a variable remains unchanged
between calls issued from outside the package to subprograms declared
in the visible part. The properties of such a variable are similar to
those of a ``static'' variable of C.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>4&nbsp;&nbsp;The elaboration of the
body of a subprogram explicitly declared in the visible part of a package
is caused by the elaboration of the body of the package. Hence a call
of such a subprogram by an outside program unit raises the exception
Program_Error if the call takes place before the elaboration of the <FONT FACE="Arial, Helvetica">package_body</FONT>
(see <A HREF="AA-3-11.html">3.11</A>). </FONT></DIV>

<H4 ALIGN=CENTER>Examples</H4>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em">&nbsp;&nbsp;&nbsp;<I>Example of a
package body (see <A HREF="AA-7-1.html">7.1</A>):</I> </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Examples"><TT><B>package</B>&nbsp;<B>body</B>&nbsp;Rational_Numbers&nbsp;<B>is</B></TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<B>procedure</B>&nbsp;Same_Denominator&nbsp;(X,Y&nbsp;:&nbsp;<B>in</B>&nbsp;<B>out</B>&nbsp;Rational)&nbsp;<B>is</B><BR>
&nbsp;&nbsp;&nbsp;<B>begin</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--<I>&nbsp;&nbsp;reduces&nbsp;X&nbsp;and&nbsp;Y&nbsp;to&nbsp;the&nbsp;same&nbsp;denominator:</I><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<BR>
&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;Same_Denominator;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;=&quot;(X,Y&nbsp;:&nbsp;Rational)&nbsp;<B>return</B>&nbsp;Boolean&nbsp;<B>is</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U&nbsp;:&nbsp;Rational&nbsp;:=&nbsp;X;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V&nbsp;:&nbsp;Rational&nbsp;:=&nbsp;Y;<BR>
&nbsp;&nbsp;&nbsp;<B>begin</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Same_Denominator&nbsp;(U,V);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>return</B>&nbsp;U.Numerator&nbsp;=&nbsp;V.Numerator;<BR>
&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;&quot;=&quot;;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;/&quot;&nbsp;(X,Y&nbsp;:&nbsp;Integer)&nbsp;<B>return</B>&nbsp;Rational&nbsp;<B>is</B><BR>
&nbsp;&nbsp;&nbsp;<B>begin</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>if</B>&nbsp;Y&nbsp;&gt;&nbsp;0&nbsp;<B>then</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>return</B>&nbsp;(Numerator&nbsp;=&gt;&nbsp;X,&nbsp;&nbsp;Denominator&nbsp;=&gt;&nbsp;Y);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>else</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>return</B>&nbsp;(Numerator&nbsp;=&gt;&nbsp;-X,&nbsp;Denominator&nbsp;=&gt;&nbsp;-Y);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;<B>if</B>;<BR>
&nbsp;&nbsp;&nbsp;<B>end</B>&nbsp;&quot;/&quot;;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14</FONT></DIV>
<DIV Class="Examples"><TT>&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;+&quot;&nbsp;(X,Y&nbsp;:&nbsp;Rational)&nbsp;<B>return</B>&nbsp;Rational&nbsp;<B>is</B>&nbsp;...&nbsp;<B>end</B>&nbsp;&quot;+&quot;;<BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;-&quot;&nbsp;(X,Y&nbsp;:&nbsp;Rational)&nbsp;<B>return</B>&nbsp;Rational&nbsp;<B>is</B>&nbsp;...&nbsp;<B>end</B>&nbsp;&quot;-&quot;;<BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;*&quot;&nbsp;(X,Y&nbsp;:&nbsp;Rational)&nbsp;<B>return</B>&nbsp;Rational&nbsp;<B>is</B>&nbsp;...&nbsp;<B>end</B>&nbsp;&quot;*&quot;;<BR>
&nbsp;&nbsp;&nbsp;<B>function</B>&nbsp;&quot;/&quot;&nbsp;(X,Y&nbsp;:&nbsp;Rational)&nbsp;<B>return</B>&nbsp;Rational&nbsp;<B>is</B>&nbsp;...&nbsp;<B>end</B>&nbsp;&quot;/&quot;;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Examples"><TT><B>end</B>&nbsp;Rational_Numbers;</TT></DIV>

<H4 ALIGN=CENTER>Wording Changes from Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>15.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The syntax rule for <FONT FACE="Arial, Helvetica">package_body</FONT>
now uses the syntactic category <FONT FACE="Arial, Helvetica">handled_sequence_of_statements</FONT>.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The <FONT FACE="Arial, Helvetica">declarative_part</FONT>
of a <FONT FACE="Arial, Helvetica">package_body</FONT> is now required;
that doesn't make any real difference, since a <FONT FACE="Arial, Helvetica">declarative_part</FONT>
can be empty.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>RM83 seems to have forgotten to
say that a <FONT FACE="Arial, Helvetica">package_body</FONT> can't stand
alone, without a previous declaration. We state that rule here.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>RM83 forgot to restrict the definition
of elaboration of <FONT FACE="Arial, Helvetica">package_bodies</FONT>
to nongeneric ones. We have corrected that omission.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15.e</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The rule about implicit bodies
(from RM83-9.3(5)) is moved here, since it is more generally applicable.
</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-7-1.html">Previous</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-7-3.html">Next</A>&nbsp;&nbsp;&nbsp;<A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>