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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>AARM95 - Use Clauses</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> <A HREF="AA-0-29.html">Index</A> <A HREF="AA-8-3.html">Previous</A> <A HREF="AA-8-5.html">Next</A></P>
<HR>
<H1> 8.4 Use Clauses</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal"> [A <FONT FACE="Arial, Helvetica">use_package_clause</FONT>
achieves direct visibility of declarations that appear in the visible
part of a package; a <FONT FACE="Arial, Helvetica">use_type_clause</FONT>
achieves direct visibility of the primitive operators of a type.] </DIV>
<H4 ALIGN=CENTER>Language Design Principles</H4>
<DIV Class="Paranum"><FONT SIZE=-2>1.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><A NAME="I3375"></A>If and only
if the visibility rules allow P.A, "<B>use</B> P;" should make
A directly visible (barring name conflicts). This means, for example,
that child library units, and generic formals of a formal package whose
<FONT FACE="Arial, Helvetica">formal_package_actual_part</FONT> is (<>),
should be made visible by a <FONT FACE="Arial, Helvetica">use_clause</FONT>
for the appropriate package.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>1.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><A NAME="I3376"></A>The rules
for <FONT FACE="Arial, Helvetica">use_clause</FONT>s were carefully constructed
to avoid so-called <I>Beaujolais</I> effects, where the addition or removal
of a single <FONT FACE="Arial, Helvetica">use_clause</FONT>, or a single
declaration in a "use"d package, would change the meaning of
a program from one legal interpretation to another. </FONT></DIV>
<H4 ALIGN=CENTER>Syntax</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">use_clause<A NAME="I3377"></A>
::= </FONT><A NAME="I3378"></A><FONT FACE="Arial, Helvetica">use_package_clause</FONT> | <A NAME="I3379"></A><FONT FACE="Arial, Helvetica">use_type_clause</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">use_package_clause<A NAME="I3380"></A>
::= </FONT><B>use</B> <I>package_</I><A NAME="I3381"></A><FONT FACE="Arial, Helvetica">name</FONT> {, <I>package_</I><A NAME="I3382"></A><FONT FACE="Arial, Helvetica">name</FONT>};</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">use_type_clause<A NAME="I3383"></A>
::= </FONT><B>use type</B> <A NAME="I3384"></A><FONT FACE="Arial, Helvetica">subtype_mark</FONT> {, <A NAME="I3385"></A><FONT FACE="Arial, Helvetica">subtype_mark</FONT>};</DIV>
<H4 ALIGN=CENTER>Legality Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="Normal"> A <I>package_</I><FONT FACE="Arial, Helvetica">name</FONT>
of a <FONT FACE="Arial, Helvetica">use_package_clause</FONT> shall denote
a package. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>This includes
formal packages. </FONT></DIV>
<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="Normal"> <A NAME="I3386"></A>For each <FONT FACE="Arial, Helvetica">use_clause</FONT>,
there is a certain region of text called the <I>scope</I> of the <FONT FACE="Arial, Helvetica">use_clause</FONT>.
For a <FONT FACE="Arial, Helvetica">use_clause</FONT> within a <FONT FACE="Arial, Helvetica">context_clause</FONT>
of a <FONT FACE="Arial, Helvetica">library_unit_declaration</FONT> or
<FONT FACE="Arial, Helvetica">library_unit_renaming_declaration</FONT>,
the scope is the entire declarative region of the declaration. For a
<FONT FACE="Arial, Helvetica">use_clause</FONT> within a <FONT FACE="Arial, Helvetica">context_clause</FONT>
of a body, the scope is the entire body [and any subunits (including
multiply nested subunits). The scope does not include <FONT FACE="Arial, Helvetica">context_clause</FONT>s
themselves.]</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Normal"> For a <FONT FACE="Arial, Helvetica">use_clause</FONT>
immediately within a declarative region, the scope is the portion of
the declarative region starting just after the <FONT FACE="Arial, Helvetica">use_clause</FONT>
and extending to the end of the declarative region. However, the scope
of a <FONT FACE="Arial, Helvetica">use_clause</FONT> in the private part
of a library unit does not include the visible part of any public descendant
of that library unit. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7.a</FONT></DIV>
<DIV Class="Annotations" Style="margin-bottom: 0.4em"><FONT SIZE=-1><B>Reason:
</B>The exception echoes the similar exception for ``immediate scope
(of a declaration)'' (see <A HREF="AA-8-2.html">8.2</A>). It makes <FONT FACE="Arial, Helvetica">use_clause</FONT>s
work like this: </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7.b</FONT></DIV>
<DIV Class="SmallExamples"><TT><B>package</B> P <B>is</B><BR>
<B>type</B> T <B>is</B> <B>range</B> 1..10;<BR>
<B>end</B> P;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7.c</FONT></DIV>
<DIV Class="SmallExamples"><TT><B>with</B> P;<BR>
<B>package</B> Parent <B>is</B><BR>
<B>private</B><BR>
<B>use</B> P;<BR>
X : T;<BR>
<B>end</B> Parent;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7.d</FONT></DIV>
<DIV Class="SmallExamples"><TT><B>package</B> Parent.Child <B>is</B><BR>
Y : T; --<I> Illegal!</I><BR>
Z : P.T;<BR>
<B>private</B><BR>
W : T;<BR>
<B>end</B> Parent.Child;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7.e</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The declaration of Y is illegal
because the scope of the ``<B>use</B> P'' does not include that place,
so T is not directly visible there. The declarations of X, Z, and W are
legal. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Normal"> <A NAME="I3387"></A>For each package denoted by
a <I>package_</I><FONT FACE="Arial, Helvetica">name</FONT> of a <FONT FACE="Arial, Helvetica">use_package_clause</FONT>
whose scope encloses a place, each declaration that occurs immediately
within the declarative region of the package is <I>potentially</I> <I>use-visible</I>
at this place if the declaration is visible at this place. For each type
<I>T</I> or <I>T</I>'Class determined by a <FONT FACE="Arial, Helvetica">subtype_mark</FONT>
of a <FONT FACE="Arial, Helvetica">use_type_clause</FONT> whose scope
encloses a place, the declaration of each primitive operator of type
<I>T</I> is potentially use-visible at this place if its declaration
is visible at this place. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>Primitive
subprograms whose defining name is an <FONT FACE="Arial, Helvetica">identifier</FONT>
are <I>not</I> made potentially visible by a <FONT FACE="Arial, Helvetica">use_type_clause</FONT>.
A <FONT FACE="Arial, Helvetica">use_type_clause</FONT> is only for operators.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The semantics described here should
be similar to the semantics for expanded names given in <A HREF="AA-4-1-3.html">4.1.3</A>,
``<A HREF="AA-4-1-3.html">Selected Components</A>'' so as to achieve
the effect requested by the ``principle of equivalence of <FONT FACE="Arial, Helvetica">use_clause</FONT>s
and <FONT FACE="Arial, Helvetica">selected_component</FONT>s.'' Thus,
child library units and generic formal parameters of a formal package
are potentially use-visible when their enclosing package is use'd.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The "visible at that place"
part implies that applying a <FONT FACE="Arial, Helvetica">use_clause</FONT>
to a parent unit does not make all of its children use-visible -- only
those that have been made visible by a <FONT FACE="Arial, Helvetica">with_clause</FONT>.
It also implies that we don't have to worry about hiding in the definition
of "directly visible" -- a declaration cannot be use-visible
unless it is visible.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Note that "<B>use type</B>
T'Class;" is equivalent to "<B>use type</B> T;", which
helps avoid breaking the generic contract model. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em"> <A NAME="I3388"></A><A NAME="I3389"></A>A
declaration is <I>use-visible</I> if it is potentially use-visible, except
in these naming-conflict cases: </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>A potentially use-visible declaration is not use-visible
if the place considered is within the immediate scope of a homograph
of the declaration.</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>Potentially use-visible declarations that have the same
<FONT FACE="Arial, Helvetica">identifier</FONT> are not use-visible unless
each of them is an overloadable declaration. </LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>11.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>Overloadable
declarations don't cancel each other out, even if they are homographs,
though if they are not distinguishable by formal parameter names or the
presence or absence of <FONT FACE="Arial, Helvetica">default_expression</FONT>s,
any use will be ambiguous. We only mention <FONT FACE="Arial, Helvetica">identifier</FONT>s
here, because declarations named by <FONT FACE="Arial, Helvetica">operator_symbol</FONT>s
are always overloadable, and hence never cancel each other. Direct visibility
is irrelevant for <FONT FACE="Arial, Helvetica">character_literal</FONT>s.
</FONT></DIV>
<H4 ALIGN=CENTER>Dynamic Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>12</FONT></DIV>
<DIV Class="Normal"> <A NAME="I3390"></A>The elaboration of a <FONT FACE="Arial, Helvetica">use_clause</FONT>
has no effect. </DIV>
<H4 ALIGN=CENTER>Examples</H4>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em"> <I>Example of a
use clause in a context clause:</I> </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14</FONT></DIV>
<DIV Class="Examples"><TT><B>with</B> Ada.Calendar; <B>use</B> Ada;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Wide" Style="margin-bottom: 0.4em"> <I>Example of a use
type clause:</I> </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<DIV Class="Examples"><TT><B>use type</B> Rational_Numbers.Rational; --<I> see <A HREF="AA-7-1.html">7.1</A></I><BR>
Two_Thirds: Rational_Numbers.Rational := 2/3;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>In ``<B>use</B>
X, Y;'', Y cannot refer to something made visible by the ``<B>use</B>''
of X. Thus, it's not (quite) equivalent to ``<B>use</B> X; <B>use</B>
Y;''.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>If a given declaration is already
immediately visible, then a <FONT FACE="Arial, Helvetica">use_clause</FONT>
that makes it potentially use-visible has no effect. Therefore, a <FONT FACE="Arial, Helvetica">use_type_clause</FONT>
for a type whose declaration appears in a place other than the visible
part of a package has no effect; it cannot make a declaration use-visible
unless that declaration is already immediately visible.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>"<B>Use</B> <B>type</B> S1;"
and "<B>use</B> <B>type</B> S2;" are equivalent if S1 and S2
are both subtypes of the same type. In particular, "<B>use</B> <B>type</B>
S;" and "<B>use</B> <B>type</B> S'Base;" are equivalent.
</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>We considered adding
a rule that prevented several declarations of views of the same entity
that all have the same semantics from cancelling each other out. For
example, if a (possibly implicit) <FONT FACE="Arial, Helvetica">subprogram_declaration</FONT>
for "+" is potentially use-visible, and a fully conformant
renaming of it is also potentially use-visible, then they (annoyingly)
cancel each other out; neither one is use-visible. The considered rule
would have made just one of them use-visible. We gave up on this idea
due to the complexity of the rule. It would have had to account for both
overloadable and non-overloadable <FONT FACE="Arial, Helvetica">renaming_declaration</FONT>s,
the case where the rule should apply only to some subset of the declarations
with the same defining name, and the case of <FONT FACE="Arial, Helvetica">subtype_declaration</FONT>s
(since they are claimed to be sufficient for renaming of subtypes). </FONT></DIV>
<H4 ALIGN=CENTER>Extensions to Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>16.e</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><A NAME="I3391"></A>The <FONT FACE="Arial, Helvetica">use_type_clause</FONT>
is new to Ada 95. </FONT></DIV>
<H4 ALIGN=CENTER>Wording Changes from Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>16.f</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The phrase ``omitting from this
set any packages that enclose this place'' is no longer necessary to
avoid making something visible outside its scope, because we explicitly
state that the declaration has to be visible in order to be potentially
use-visible. </FONT></DIV>
<HR>
<P><A HREF="AA-TOC.html">Contents</A> <A HREF="AA-0-29.html">Index</A> <A HREF="AA-8-3.html">Previous</A> <A HREF="AA-8-5.html">Next</A> <A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>
|