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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>AARM95 - Attributes</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-4-1-3.html">Previous</A> <A HREF="AA-4-2.html">Next</A></P>
<HR>
<H1> 4.1.4 Attributes</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal"> <A NAME="I2320"></A>[An <I>attribute</I> is a
characteristic of an entity that can be queried via an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
or a <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>.]
</DIV>
<H4 ALIGN=CENTER>Syntax</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">attribute_reference<A NAME="I2321"></A>
::= </FONT><A NAME="I2322"></A><FONT FACE="Arial, Helvetica">prefix</FONT>'<A NAME="I2323"></A><FONT FACE="Arial, Helvetica">attribute_designator</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">attribute_designator<A NAME="I2324"></A>
::= </FONT><BR>
<A NAME="I2325"></A><FONT FACE="Arial, Helvetica">identifier</FONT>[(<I>static_</I><A NAME="I2326"></A><FONT FACE="Arial, Helvetica">expression</FONT>)]<BR>
| Access | Delta | Digits</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">range_attribute_reference<A NAME="I2327"></A>
::= </FONT><A NAME="I2328"></A><FONT FACE="Arial, Helvetica">prefix</FONT>'<A NAME="I2329"></A><FONT FACE="Arial, Helvetica">range_attribute_designator</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">range_attribute_designator<A NAME="I2330"></A>
::= </FONT>Range[(<I>static_</I><A NAME="I2331"></A><FONT FACE="Arial, Helvetica">expression</FONT>)]</DIV>
<H4 ALIGN=CENTER>Name Resolution Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="Normal"> In an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>,
if the <FONT FACE="Arial, Helvetica">attribute_designator</FONT> is for
an attribute defined for (at least some) objects of an access type, then
the <FONT FACE="Arial, Helvetica">prefix</FONT> is never interpreted
as an <FONT FACE="Arial, Helvetica">implicit_dereference</FONT>; otherwise
(and for all <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>s),
if the type of the <FONT FACE="Arial, Helvetica">name</FONT> within the
<FONT FACE="Arial, Helvetica">prefix</FONT> is of an access type, the
<FONT FACE="Arial, Helvetica">prefix</FONT> is interpreted as an <FONT FACE="Arial, Helvetica">implicit_dereference</FONT>.
Similarly, if the <FONT FACE="Arial, Helvetica">attribute_designator</FONT>
is for an attribute defined for (at least some) functions, then the <FONT FACE="Arial, Helvetica">prefix</FONT>
is never interpreted as a parameterless <FONT FACE="Arial, Helvetica">function_call</FONT>;
otherwise (and for all <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>s),
if the <FONT FACE="Arial, Helvetica">prefix</FONT> consists of a <FONT FACE="Arial, Helvetica">name</FONT>
that denotes a function, it is interpreted as a parameterless <FONT FACE="Arial, Helvetica">function_call</FONT>.
</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>The first part
of this rule is essentially a "preference" against implicit
dereference, so that it is possible to ask for, say, 'Size of an access
object, without automatically getting the size of the object designated
by the access object. This rule applies to 'Access, 'Unchecked_Access,
'Size, and 'Address, and any other attributes that are defined for at
least some access objects.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The second part of this rule implies
that, for a parameterless function F, F'Address is the address of F,
whereas F'Size is the size of the anonymous constant returned by F.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6.c/1</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We normally talk in terms of expected
type or profile for name resolution rules, but we don't do this for attributes
because certain attributes are legal independent of the type or the profile
of the <U><FONT FACE="Arial, Helvetica">prefix</FONT></U><S>prefix</S>.
</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Normal"> <A NAME="I2332"></A><A NAME="I2333"></A>The <FONT FACE="Arial, Helvetica">expression</FONT>,
if any, in an <FONT FACE="Arial, Helvetica">attribute_designator</FONT>
or <FONT FACE="Arial, Helvetica">range_attribute_designator</FONT> is
expected to be of any integer type. </DIV>
<H4 ALIGN=CENTER>Legality Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Normal"> The <FONT FACE="Arial, Helvetica">expression</FONT>,
if any, in an <FONT FACE="Arial, Helvetica">attribute_designator</FONT>
or <FONT FACE="Arial, Helvetica">range_attribute_designator</FONT> shall
be static. </DIV>
<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Normal"> An <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
denotes a value, an object, a subprogram, or some other kind of program
entity. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>The attributes
defined by the language are summarized in <A HREF="AA-K.html">Annex K</A>.
Implementations can define additional attributes. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Normal"> [A <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>
X'Range(N) is equivalent to the <FONT FACE="Arial, Helvetica">range</FONT>
X'First(N) .. X'Last(N), except that the <FONT FACE="Arial, Helvetica">prefix</FONT>
is only evaluated once. Similarly, X'Range is equivalent to X'First ..
X'Last, except that the <FONT FACE="Arial, Helvetica">prefix</FONT> is
only evaluated once.]</DIV>
<H4 ALIGN=CENTER>Dynamic Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<DIV Class="Normal"> <A NAME="I2334"></A><A NAME="I2335"></A>The evaluation
of an <FONT FACE="Arial, Helvetica">attribute_reference</FONT> (or <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>)
consists of the evaluation of the <FONT FACE="Arial, Helvetica">prefix</FONT>.
</DIV>
<H4 ALIGN=CENTER>Implementation Permissions</H4>
<DIV Class="Paranum"><FONT SIZE=-2>12/1</FONT></DIV>
<DIV Class="Normal"> {<I><A HREF="defect1.html#8652/0015">8652/0015</A></I>}
An implementation may provide implementation-defined attributes; the
<FONT FACE="Arial, Helvetica">identifier</FONT> for an implementation-defined
attribute shall differ from those of the language-defined attributes<U>
unless supplied for compatibility with a previous edition of this International
Standard</U>. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Implementation defined: </B>Implementation-defined
attributes.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>They cannot
be reserved words because reserved words are not legal identifiers.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The semantics of implementation-defined
attributes, and any associated rules, are, of course, implementation
defined. For example, the implementation defines whether a given implementation-defined
attribute can be used in a static expression.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12.c.1/1</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>{<I><A HREF="defect1.html#8652/0015">8652/0015</A></I>}
<U>Implementations are allowed to support the Small attribute for floating
types, as this was defined in Ada 83, even though the name would conflict
with a language-defined attribute.</U> </FONT></DIV>
<DIV Class="NotesHeader"><FONT SIZE=-1>NOTES</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>4 Attributes are defined
throughout this International Standard, and are summarized in <A HREF="AA-K.html">Annex
K</A>.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14/1</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>5 In general, the <FONT FACE="Arial, Helvetica">name</FONT>
in a <FONT FACE="Arial, Helvetica">prefix</FONT> of an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
(or a <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>)
has to be resolved without using any context. However, in the case of
the Access attribute, the expected type for the <U><FONT FACE="Arial, Helvetica">prefix</FONT></U><S>prefix</S>
has to be a single access type, and if it is an access-to-subprogram
type (see <A HREF="AA-3-10-2.html">3.10.2</A>) then the resolution of
the <FONT FACE="Arial, Helvetica">name</FONT> can use the fact that the
profile of the callable entity denoted by the <FONT FACE="Arial, Helvetica">prefix</FONT>
has to be type conformant with the designated profile of the access type.
<A NAME="I2336"></A></FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Proof: </B>In the general case,
there is no ``expected type'' for the <FONT FACE="Arial, Helvetica">prefix</FONT>
of an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>. In the
special case of 'Access, there is an ``expected profile'' for the <FONT FACE="Arial, Helvetica">prefix</FONT>.
</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>14.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>'Access is a special
case, because without it, it would be very difficult to take 'Access
of an overloaded subprogram. </FONT></DIV>
<H4 ALIGN=CENTER>Examples</H4>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em"> <I>Examples of
attributes:</I> </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<DIV Class="Examples"><TT>Color'First <I>-- minimum value of the enumeration type Color (see <A HREF="AA-3-5-1.html">3.5.1</A>)</I><BR>
Rainbow'Base'First <I>-- same as Color'First (see <A HREF="AA-3-5-1.html">3.5.1</A>)</I><BR>
Real'Digits <I>-- precision of the type Real (see <A HREF="AA-3-5-7.html">3.5.7</A>)</I><BR>
Board'Last(2) <I>-- upper bound of the second dimension of Board (see <A HREF="AA-3-6-1.html">3.6.1</A>)</I><BR>
Board'Range(1) <I>-- index range of the first dimension of Board (see <A HREF="AA-3-6-1.html">3.6.1</A>)</I><BR>
Pool(K)'Terminated <I>-- True if task Pool(K) is terminated (see <A HREF="AA-9-1.html">9.1</A>)</I><BR>
Date'Size <I>-- number of bits for records of type Date (see <A HREF="AA-3-8.html">3.8</A>)</I><BR>
Message'Address <I>-- address of the record variable Message (see <A HREF="AA-3-7-1.html">3.7.1</A>)</I></TT></DIV>
<H4 ALIGN=CENTER>Extensions to Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>16.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><A NAME="I2337"></A>We now uniformly
treat X'Range as X'First..X'Last, allowing its use with scalar subtypes.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We allow any integer type in the
<I>static_</I><FONT FACE="Arial, Helvetica">expression</FONT> of an attribute
designator, not just a value of <I>universal_integer</I>. The preference
rules ensure upward compatibility. </FONT></DIV>
<H4 ALIGN=CENTER>Wording Changes from Ada 83</H4>
<DIV Class="Paranum"><FONT SIZE=-2>16.c</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We use the syntactic category
<FONT FACE="Arial, Helvetica">attribute_reference</FONT> rather than
simply "attribute" to avoid confusing the name of something
with the thing itself.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.d</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The syntax rule for <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
now uses <FONT FACE="Arial, Helvetica">identifier</FONT> instead of <FONT FACE="Arial, Helvetica">simple_name</FONT>,
because attribute <FONT FACE="Arial, Helvetica">identifier</FONT>s are
not required to follow the normal visibility rules.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.e</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>We now separate <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
from <FONT FACE="Arial, Helvetica">range_attribute_reference</FONT>,
and enumerate the reserved words that are legal attribute or range attribute
designators. We do this because <FONT FACE="Arial, Helvetica">identifier</FONT>
no longer includes reserved words.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.f</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>The Ada 95 name resolution rules
are a bit more explicit than in Ada 83. The Ada 83 rule said that the
"meaning of the prefix of an attribute must be determinable independently
of the attribute designator and independently of the fact that it is
the prefix of an attribute." That isn't quite right since the meaning
even in Ada 83 embodies whether or not the prefix is interpreted as a
parameterless function call, and in Ada 95, it also embodies whether
or not the prefix is interpreted as an implicit_dereference. So the attribute
designator does make a difference -- just not much.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16.g</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1>Note however that if the attribute
designator is Access, it makes a big difference in the interpretation
of the prefix (see <A HREF="AA-3-10-2.html">3.10.2</A>). </FONT></DIV>
<HR>
<P><A HREF="AA-TOC.html">Contents</A> <A HREF="AA-0-29.html">Index</A> <A HREF="AA-4-1-3.html">Previous</A> <A HREF="AA-4-2.html">Next</A> <A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>
|