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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Ada95 - Record Types</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="RM-TOC.html">Contents</A> <A HREF="RM-0-29.html">Index</A> <A HREF="RM-3-7-2.html">Previous</A> <A HREF="RM-3-8-1.html">Next</A></P>
<HR>
<H1> 3.8 Record Types</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1888"></A><A NAME="I1889"></A>A record
object is a composite object consisting of named components. The value
of a record object is a composite value consisting of the values of the
components. <A NAME="I1890"></A></DIV>
<H4 ALIGN=CENTER>Syntax</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">record_type_definition<A NAME="I1891"></A>
::= </FONT>[[<B>abstract</B>] <B>tagged</B>] [<B>limited</B>] <A NAME="I1892"></A><FONT FACE="Arial, Helvetica">record_definition</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">record_definition<A NAME="I1893"></A>
::= </FONT><BR>
<B>record</B><BR>
<A NAME="I1894"></A><FONT FACE="Arial, Helvetica">component_list</FONT><BR>
<B>end</B> <B>record</B><BR>
| <B>null record</B></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">component_list<A NAME="I1895"></A>
::= </FONT><BR>
<A NAME="I1896"></A><FONT FACE="Arial, Helvetica">component_item</FONT> {<A NAME="I1897"></A><FONT FACE="Arial, Helvetica">component_item</FONT>}<BR>
| {<A NAME="I1898"></A><FONT FACE="Arial, Helvetica">component_item</FONT>} <A NAME="I1899"></A><FONT FACE="Arial, Helvetica">variant_part</FONT><BR>
| <B>null</B>;</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5/1</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">component_item<A NAME="I1900"></A>
::= </FONT><A NAME="I1901"></A><FONT FACE="Arial, Helvetica">component_declaration</FONT> | <A NAME="I1902"></A><FONT FACE="Arial, Helvetica">aspect_clause</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="SyntaxIndented"><FONT FACE="Arial, Helvetica">component_declaration<A NAME="I1903"></A>
::= </FONT><BR>
<A NAME="I1904"></A><FONT FACE="Arial, Helvetica">defining_identifier_list</FONT> : <A NAME="I1905"></A><FONT FACE="Arial, Helvetica">component_definition</FONT> [:= <A NAME="I1906"></A><FONT FACE="Arial, Helvetica">default_expression</FONT>];</DIV>
<H4 ALIGN=CENTER>Name Resolution Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1907"></A>The expected type for the
<FONT FACE="Arial, Helvetica">default_expression</FONT>, if any, in a
<FONT FACE="Arial, Helvetica">component_declaration</FONT> is the type
of the component. </DIV>
<H4 ALIGN=CENTER>Legality Rules</H4>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Normal"> A <FONT FACE="Arial, Helvetica">default_expression</FONT>
is not permitted if the component is of a limited type.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1908"></A>Each <FONT FACE="Arial, Helvetica">component_declaration</FONT>
declares a <I>component</I> of the record type. Besides components declared
by <FONT FACE="Arial, Helvetica">component_declaration</FONT>s, the components
of a record type include any components declared by <FONT FACE="Arial, Helvetica">discriminant_specification</FONT>s
of the record type declaration. The identifiers of all components of
a record type shall be distinct. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Normal"> Within a <FONT FACE="Arial, Helvetica">type_declaration</FONT>,
a <FONT FACE="Arial, Helvetica">name</FONT> that denotes a component,
protected subprogram, or entry of the type is allowed only in the following
cases:</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>A <FONT FACE="Arial, Helvetica">name</FONT> that denotes
any component, protected subprogram, or entry is allowed within a representation
item that occurs within the declaration of the composite type.</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>12</FONT></DIV>
<UL Class="Bulleted"><LI TYPE=DISC>A <FONT FACE="Arial, Helvetica">name</FONT> that denotes
a noninherited discriminant is allowed within the declaration of the
type, but not within the <FONT FACE="Arial, Helvetica">discriminant_part</FONT>.
If the discriminant is used to define the constraint of a component,
the bounds of an entry family, or the constraint of the parent subtype
in a <FONT FACE="Arial, Helvetica">derived_type_definition</FONT> then
its name shall appear alone as a <FONT FACE="Arial, Helvetica">direct_name</FONT>
(not as part of a larger expression or expanded name). A discriminant
shall not be used to define the constraint of a scalar component. </LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<DIV Class="Normal"> If the name of the current instance of a type
(see <A HREF="RM-8-6.html">8.6</A>) is used to define the constraint
of a component, then it shall appear as a <FONT FACE="Arial, Helvetica">direct_name</FONT>
that is the <FONT FACE="Arial, Helvetica">prefix</FONT> of an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
whose result is of an access type, and the <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
shall appear alone. </DIV>
<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>14</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1909"></A>The <FONT FACE="Arial, Helvetica">component_definition</FONT>
of a <FONT FACE="Arial, Helvetica">component_declaration</FONT> defines
the (nominal) subtype of the component. If the reserved word <B>aliased</B>
appears in the <FONT FACE="Arial, Helvetica">component_definition</FONT>,
then the component is aliased (see <A HREF="RM-3-10.html">3.10</A>).
</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1910"></A>If the <FONT FACE="Arial, Helvetica">component_list</FONT>
of a record type is defined by the reserved word <B>null</B> and there
are no discriminants, then the record type has no components and all
records of the type are <I>null records</I>. A <FONT FACE="Arial, Helvetica">record_definition</FONT>
of <B>null record</B> is equivalent to <B>record null; end record</B>.
</DIV>
<H4 ALIGN=CENTER>Dynamic Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1911"></A>The elaboration of a <FONT FACE="Arial, Helvetica">record_type_definition</FONT>
creates the record type and its first subtype, and consists of the elaboration
of the <FONT FACE="Arial, Helvetica">record_definition</FONT>. <A NAME="I1912"></A>The
elaboration of a <FONT FACE="Arial, Helvetica">record_definition</FONT>
consists of the elaboration of its <FONT FACE="Arial, Helvetica">component_list</FONT>,
if any.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>17</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1913"></A>The elaboration of a <FONT FACE="Arial, Helvetica">component_list</FONT>
consists of the elaboration of the <FONT FACE="Arial, Helvetica">component_item</FONT>s
and <FONT FACE="Arial, Helvetica">variant_part</FONT>, if any, in the
order in which they appear. <A NAME="I1914"></A>The elaboration of a
<FONT FACE="Arial, Helvetica">component_declaration</FONT> consists of
the elaboration of the <FONT FACE="Arial, Helvetica">component_definition</FONT>.
</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>18/1</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1915"></A><A NAME="I1916"></A><A NAME="I1917"></A>Within
the definition of a composite type, if a <FONT FACE="Arial, Helvetica">component_definition</FONT>
or <FONT FACE="Arial, Helvetica">discrete_subtype_definition</FONT> (see
<A HREF="RM-9-5-2.html">9.5.2</A>) includes a <FONT FACE="Arial, Helvetica">name</FONT>
that denotes a discriminant of the type, or that is an <FONT FACE="Arial, Helvetica">attribute_reference</FONT>
whose <FONT FACE="Arial, Helvetica">prefix</FONT> denotes the current
instance of the type, the expression containing the <FONT FACE="Arial, Helvetica">name</FONT>
is called a <I>per-object expression</I>, and the <FONT FACE="Arial, Helvetica">constraint</FONT>
or <FONT FACE="Arial, Helvetica">range</FONT> being defined is called
a <I>per-object constraint</I>. <A NAME="I1918"></A>For the elaboration
of a <FONT FACE="Arial, Helvetica">component_definition</FONT> of a <FONT FACE="Arial, Helvetica">component_declaration</FONT>
or the <FONT FACE="Arial, Helvetica">discrete_subtype_definition</FONT>
of an <FONT FACE="Arial, Helvetica">entry_declaration</FONT> for an entry
family (see <A HREF="RM-9-5-2.html">9.5.2</A>), if the <FONT FACE="Arial, Helvetica">constraint</FONT>
or <FONT FACE="Arial, Helvetica">range</FONT> of the <FONT FACE="Arial, Helvetica">subtype_indication</FONT>
or <FONT FACE="Arial, Helvetica">discrete_subtype_definition</FONT> is
not a per-object constraint, then the <FONT FACE="Arial, Helvetica">subtype_indication</FONT>
or <FONT FACE="Arial, Helvetica">discrete_subtype_definition</FONT> is
elaborated. On the other hand, if the <FONT FACE="Arial, Helvetica">constraint</FONT>
or <FONT FACE="Arial, Helvetica">range</FONT> is a per-object constraint,
then the elaboration consists of the evaluation of any included expression
that is not part of a per-object expression. Each such expression is
evaluated once unless it is part of a named association in a discriminant
constraint, in which case it is evaluated once for each associated discriminant.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>18.1/1</FONT></DIV>
<DIV Class="Normal"> <A NAME="I1919"></A>When a per-object constraint
is elaborated (as part of creating an object), each per-object expression
of the constraint is evaluated. For other expressions, the values determined
during the elaboration of the <FONT FACE="Arial, Helvetica">component_definition</FONT>
or <FONT FACE="Arial, Helvetica">entry_declaration</FONT> are used. Any
checks associated with the enclosing <FONT FACE="Arial, Helvetica">subtype_indication</FONT>
or <FONT FACE="Arial, Helvetica">discrete_subtype_definition</FONT> are
performed, including the subtype compatibility check (see <A HREF="RM-3-2-2.html">3.2.2</A>),
and the associated subtype is created. </DIV>
<DIV Class="NotesHeader"><FONT SIZE=-1>NOTES</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>19</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>55 A <FONT FACE="Arial, Helvetica">component_declaration</FONT>
with several identifiers is equivalent to a sequence of single <FONT FACE="Arial, Helvetica">component_declaration</FONT>s,
as explained in <A HREF="RM-3-3-1.html">3.3.1</A>.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>20</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>56 The <FONT FACE="Arial, Helvetica">default_expression</FONT>
of a record component is only evaluated upon the creation of a default-initialized
object of the record type (presuming the object has the component, if
it is in a <FONT FACE="Arial, Helvetica">variant_part</FONT> -- see <A HREF="RM-3-3-1.html">3.3.1</A>).</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>21</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>57 The subtype defined by
a <FONT FACE="Arial, Helvetica">component_definition</FONT> (see <A HREF="RM-3-6.html">3.6</A>)
has to be a definite subtype.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>22</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>58 If a record type does
not have a <FONT FACE="Arial, Helvetica">variant_part</FONT>, then the
same components are present in all values of the type.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>23</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>59 A record type is limited
if it has the reserved word <B>limited</B> in its definition, or if any
of its components are limited (see <A HREF="RM-7-5.html">7.5</A>).</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>24</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>60 <A NAME="I1920"></A>The
predefined operations of a record type include membership tests, qualification,
and explicit conversion. If the record type is nonlimited, they also
include assignment and the predefined equality operators.</FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>25</FONT></DIV>
<DIV Class="Notes"><FONT SIZE=-1>61 A component of a record
can be named with a <FONT FACE="Arial, Helvetica">selected_component</FONT>.
A value of a record can be specified with a <FONT FACE="Arial, Helvetica">record_aggregate</FONT>,
unless the record type is limited.</FONT></DIV>
<H4 ALIGN=CENTER>Examples</H4>
<DIV Class="Paranum"><FONT SIZE=-2>26</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em"> <I>Examples of
record type declarations: </I></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>27</FONT></DIV>
<DIV Class="Examples"><TT><B>type</B> Date <B>is</B><BR>
<B>record</B><BR>
Day : Integer <B>range</B> 1 .. 31;<BR>
Month : Month_Name;<BR>
Year : Integer <B>range</B> 0 .. 4000;<BR>
<B>end</B> <B>record</B>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>28</FONT></DIV>
<DIV Class="Examples"><TT><B>type</B> Complex <B>is</B><BR>
<B>record</B><BR>
Re : Real := 0.0;<BR>
Im : Real := 0.0;<BR>
<B>end</B> <B>record</B>;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>29</FONT></DIV>
<DIV Class="Wide" Style="margin-bottom: 0.4em"> <I>Examples of record
variables: </I></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>30</FONT></DIV>
<DIV Class="Examples"><TT>Tomorrow, Yesterday : Date;<BR>
A, B, C : Complex;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>31</FONT></DIV>
<DIV Class="Examples"><TT><I>-- both components of A, B, and C are implicitly initialized to zero </I></TT></DIV>
<HR>
<P><A HREF="RM-TOC.html">Contents</A> <A HREF="RM-0-29.html">Index</A> <A HREF="RM-3-7-2.html">Previous</A> <A HREF="RM-3-8-1.html">Next</A> <A HREF="RM-TTL.html">Legal</A></P>
</BODY>
</HTML>
|