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 283 284 285 286 287 288 289 290 291 292
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>AARM95 - Complex Input-Output</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-G-1-2.html">Previous</A> <A HREF="AA-G-1-4.html">Next</A></P>
<HR>
<H1> G.1.3 Complex Input-Output</H1>
<DIV Class="Paranum"><FONT SIZE=-2>1</FONT></DIV>
<DIV Class="Normal"> The generic package Text_IO.Complex_IO defines
procedures for the formatted input and output of complex values. The
generic actual parameter in an instantiation of Text_IO.Complex_IO is
an instance of Numerics.Generic_Complex_Types for some floating point
subtype. Exceptional conditions are reported by raising the appropriate
exception defined in Text_IO. </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>1.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Implementation Note: </B>An
implementation of Text_IO.Complex_IO can be built around an instance
of Text_IO.Float_IO for the base subtype of Complex_Types.Real, where
Complex_Types is the generic formal package parameter of Text_IO.Complex_IO.
There is no need for an implementation of Text_IO.Complex_IO to parse
real values. </FONT></DIV>
<H4 ALIGN=CENTER>Static Semantics</H4>
<DIV Class="Paranum"><FONT SIZE=-2>2</FONT></DIV>
<DIV Class="Normal" Style="margin-bottom: 0.4em"> The generic library
package Text_IO.Complex_IO has the following declaration: </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>2.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Ramification: </B>Because this
is a child of Text_IO, the declarations of the visible part of Text_IO
are directly visible within it. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>3</FONT></DIV>
<DIV Class="Examples"><TT><B>with</B> Ada.Numerics.Generic_Complex_Types;<BR>
<B>generic</B><A NAME="I7227"></A><A NAME="I7228"></A><A NAME="I7229"></A><BR>
<B>with</B> <B>package</B> Complex_Types <B>is</B><BR>
<B>new</B> Ada.Numerics.Generic_Complex_Types (<>);<BR>
<B>package</B> Ada.Text_IO.Complex_IO <B>is</B></TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>4</FONT></DIV>
<DIV Class="Examples"><TT> <B>use</B> Complex_Types;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>5</FONT></DIV>
<DIV Class="Examples"><TT> <A NAME="I7230"></A>Default_Fore : Field := 2;<BR>
<A NAME="I7231"></A>Default_Aft : Field := Real'Digits - 1;<BR>
<A NAME="I7232"></A>Default_Exp : Field := 3;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>6</FONT></DIV>
<DIV Class="Examples"><TT> <B>procedure</B> <A NAME="I7233"></A><A NAME="I7234"></A>Get (File : <B>in</B> File_Type;<BR>
Item : <B>out</B> Complex;<BR>
Width : <B>in</B> Field := 0);<BR>
<B>procedure</B> <A NAME="I7235"></A><A NAME="I7236"></A>Get (Item : <B>out</B> Complex;<BR>
Width : <B>in</B> Field := 0);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>7</FONT></DIV>
<DIV Class="Examples"><TT> <B>procedure</B> <A NAME="I7237"></A><A NAME="I7238"></A>Put (File : <B>in</B> File_Type;<BR>
Item : <B>in</B> Complex;<BR>
Fore : <B>in</B> Field := Default_Fore;<BR>
Aft : <B>in</B> Field := Default_Aft;<BR>
Exp : <B>in</B> Field := Default_Exp);<BR>
<B>procedure</B> <A NAME="I7239"></A><A NAME="I7240"></A>Put (Item : <B>in</B> Complex;<BR>
Fore : <B>in</B> Field := Default_Fore;<BR>
Aft : <B>in</B> Field := Default_Aft;<BR>
Exp : <B>in</B> Field := Default_Exp);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>8</FONT></DIV>
<DIV Class="Examples" Style="margin-bottom: 0.9em"><TT> <B>procedure</B> <A NAME="I7241"></A><A NAME="I7242"></A>Get (From : <B>in</B> String;<BR>
Item : <B>out</B> Complex;<BR>
Last : <B>out</B> Positive);<BR>
<B>procedure</B> <A NAME="I7243"></A><A NAME="I7244"></A>Put (To : <B>out</B> String;<BR>
Item : <B>in</B> Complex;<BR>
Aft : <B>in</B> Field := Default_Aft;<BR>
Exp : <B>in</B> Field := Default_Exp);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>9</FONT></DIV>
<DIV Class="Examples"><TT><B>end</B> Ada.Text_IO.Complex_IO;</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>10</FONT></DIV>
<DIV Class="Normal"> The semantics of the Get and Put procedures are
as follows: </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>11</FONT></DIV>
<DIV Class="Examples"><TT><B>procedure</B> Get (File : <B>in</B> File_Type;<BR>
Item : <B>out</B> Complex;<BR>
Width : <B>in</B> Field := 0);<BR>
<B>procedure</B> Get (Item : <B>out</B> Complex;<BR>
Width : <B>in</B> Field := 0);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>12/1</FONT></DIV>
<DIV Class="CodeIndented">{<I><A HREF="defect1.html#8652/0092">8652/0092</A></I>}
The input sequence is a pair of optionally signed real literals representing
the real and imaginary components of a complex value<U> These components
have the format defined for the corresponding Get procedure of an instance
of Text_IO.Float_IO (see <A HREF="AA-A-10-9.html">A.10.9</A>) for the
base subtype of Complex_Types.Real. T</U><S>; optionally, t</S>he pair
of components may be separated by a comma <S>and/</S>or surrounded by
a pair of parentheses<U> or both</U>. Blanks are freely allowed before
each of the components and before the parentheses and comma, if either
is used. If the value of the parameter Width is zero, then </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>13</FONT></DIV>
<UL Class="CodeIndentedBulleted" Style="margin-bottom: 0.3em"><LI TYPE=DISC>line and page terminators are also allowed in these places;</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>14</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>the components shall be separated by at least one blank
or line terminator if the comma is omitted; and</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>15</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>reading stops when the right parenthesis has been read,
if the input sequence includes a left parenthesis, or when the imaginary
component has been read, otherwise. </LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>15.1</FONT></DIV>
<DIV Class="CodeIndented" Style="margin-bottom: 0.4em"><S></S>If a nonzero
value of Width is supplied, then</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>16</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>the components shall be separated by at least one blank
if the comma is omitted; and</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>17</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>exactly Width characters are read, or the characters (possibly
none) up to a line terminator, whichever comes first (blanks are included
in the count). </LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>17.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>The parenthesized
and comma-separated form is the form produced by Put on output (see below),
and also by list-directed output in Fortran. The other allowed forms
match several common styles of edit-directed output in Fortran, allowing
most preexisting Fortran data files containing complex data to be read
easily. When such files contain complex values with no separation between
the real and imaginary components, the user will have to read those components
separately, using an instance of Text_IO.Float_IO. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>18</FONT></DIV>
<DIV Class="CodeIndented">Returns, in the parameter Item, the value of
type Complex that corresponds to the input sequence.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>19</FONT></DIV>
<DIV Class="CodeIndented" Style="margin-bottom: 0.9em">The exception
Text_IO.Data_Error is raised if the input sequence does not have the
required syntax or if the components of the complex value obtained are
not of the base subtype of Complex_Types.Real.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>20</FONT></DIV>
<DIV Class="Examples"><TT><B>procedure</B> Put (File : <B>in</B> File_Type;<BR>
Item : <B>in</B> Complex;<BR>
Fore : <B>in</B> Field := Default_Fore;<BR>
Aft : <B>in</B> Field := Default_Aft;<BR>
Exp : <B>in</B> Field := Default_Exp);<BR>
<B>procedure</B> Put (Item : <B>in</B> Complex;<BR>
Fore : <B>in</B> Field := Default_Fore;<BR>
Aft : <B>in</B> Field := Default_Aft;<BR>
Exp : <B>in</B> Field := Default_Exp);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>21</FONT></DIV>
<DIV Class="CodeIndented">Outputs the value of the parameter Item as
a pair of decimal literals representing the real and imaginary components
of the complex value, using the syntax of an aggregate. More specifically,
</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>22</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>outputs a left parenthesis;</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>23</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>outputs the value of the real component of the parameter
Item with the format defined by the corresponding Put procedure of an
instance of Text_IO.Float_IO for the base subtype of Complex_Types.Real,
using the given values of Fore, Aft, and Exp;</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>24</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>outputs a comma;</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>25</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>outputs the value of the imaginary component of the parameter
Item with the format defined by the corresponding Put procedure of an
instance of Text_IO.Float_IO for the base subtype of Complex_Types.Real,
using the given values of Fore, Aft, and Exp;</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>26</FONT></DIV>
<UL Class="CodeIndentedBulleted" Style="margin-bottom: 0.7em"><LI TYPE=DISC>outputs a right parenthesis. </LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>26.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>If the file
has a bounded line length, a line terminator may be output implicitly
before any element of the sequence itemized above. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>26.b</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Discussion: </B>The option
of outputting the complex value as a pair of reals without additional
punctuation is not provided, since it can be accomplished by outputting
the real and imaginary components of the complex value separately. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>27</FONT></DIV>
<DIV Class="Examples"><TT><B>procedure</B> Get (From : <B>in</B> String;<BR>
Item : <B>out</B> Complex;<BR>
Last : <B>out</B> Positive);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>28</FONT></DIV>
<DIV Class="CodeIndented">Reads a complex value from the beginning of
the given string, following the same rule as the Get procedure that reads
a complex value from a file, but treating the end of the string as a
line terminator. Returns, in the parameter Item, the value of type Complex
that corresponds to the input sequence. Returns in Last the index value
such that From(Last) is the last character read.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>29</FONT></DIV>
<DIV Class="CodeIndented" Style="margin-bottom: 0.9em">The exception
Text_IO.Data_Error is raised if the input sequence does not have the
required syntax or if the components of the complex value obtained are
not of the base subtype of Complex_Types.Real.</DIV>
<DIV Class="Paranum"><FONT SIZE=-2>30</FONT></DIV>
<DIV Class="Examples"><TT><B>procedure</B> Put (To : <B>out</B> String;<BR>
Item : <B>in</B> Complex;<BR>
Aft : <B>in</B> Field := Default_Aft;<BR>
Exp : <B>in</B> Field := Default_Exp);</TT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>31</FONT></DIV>
<DIV Class="CodeIndented">Outputs the value of the parameter Item to
the given string as a pair of decimal literals representing the real
and imaginary components of the complex value, using the syntax of an
aggregate. More specifically, </DIV>
<DIV Class="Paranum"><FONT SIZE=-2>32</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>a left parenthesis, the real component, and a comma are
left justified in the given string, with the real component having the
format defined by the Put procedure (for output to a file) of an instance
of Text_IO.Float_IO for the base subtype of Complex_Types.Real, using
a value of zero for Fore and the given values of Aft and Exp;</LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>33</FONT></DIV>
<UL Class="CodeIndentedBulleted"><LI TYPE=DISC>the imaginary component and a right parenthesis are right
justified in the given string, with the imaginary component having the
format defined by the Put procedure (for output to a file) of an instance
of Text_IO.Float_IO for the base subtype of Complex_Types.Real, using
a value for Fore that completely fills the remainder of the string, together
with the given values of Aft and Exp. </LI></UL>
<DIV Class="Paranum"><FONT SIZE=-2>33.a</FONT></DIV>
<DIV Class="Annotations"><FONT SIZE=-1><B>Reason: </B>This rule is the
one proposed in LSN-1051. Other rules were considered, including one
that would have read ``Outputs the value of the parameter Item to the
given string, following the same rule as for output to a file, using
a value for Fore such that the sequence of characters output exactly
fills, or comes closest to filling, the string; in the latter case, the
string is filled by inserting one extra blank immediately after the comma.''
While this latter rule might be considered the closest analogue to the
rule for output to a string in Text_IO.Float_IO, it requires a more difficult
and inefficient implementation involving special cases when the integer
part of one component is substantially longer than that of the other
and the string is too short to allow both to be preceded by blanks. Unless
such a special case applies, the latter rule might produce better columnar
output if several such strings are ultimately output to a file, but very
nearly the same output can be produced by outputting to the file directly,
with the appropriate value of Fore; in any case, it might validly be
assumed that output to a string is intended for further computation rather
than for display, so that the precise formatting of the string to achieve
a particular appearance is not the major concern. </FONT></DIV>
<DIV Class="Paranum"><FONT SIZE=-2>34</FONT></DIV>
<DIV Class="CodeIndented">The exception Text_IO.Layout_Error is raised
if the given string is too short to hold the formatted output. </DIV>
<H4 ALIGN=CENTER>Implementation Permissions</H4>
<DIV Class="Paranum"><FONT SIZE=-2>35</FONT></DIV>
<DIV Class="Normal"> Other exceptions declared (by renaming) in Text_IO
may be raised by the preceding procedures in the appropriate circumstances,
as for the corresponding procedures of Text_IO.Float_IO. </DIV>
<HR>
<P><A HREF="AA-TOC.html">Contents</A> <A HREF="AA-0-29.html">Index</A> <A HREF="AA-G-1-2.html">Previous</A> <A HREF="AA-G-1-4.html">Next</A> <A HREF="AA-TTL.html">Legal</A></P>
</BODY>
</HTML>
|