Syntax options:
FLOAT=D_FLOAT
FLOAT=G_FLOAT
FOAT=IEEE_FLOAT
The /FLOAT qualifier determines the conversion that SQL Module
language performs on SQL Module Language procedure parameters
declared as single or double precision floating point SQL
datatypes. SQL floating point datatypes are FLOAT(n), REAL, and
DOUBLE PRECISION. See the Oracle Rdb SQL Reference Manual for
details. Internally to Oracle Rdb, single precision floating
point types are represented as F-Floating while double precision
floating point types are represented and G-Floating. See SQL and
Corresponding OpenVMS Data Types for Module Language in Section
3.4 of the Oracle Rdb SQL Reference Manual for more details.
By default, parameters declared as single or double precision
floating point type are expected to be passed by the calling
host language program in F-Floating and G-Floating format,
respectively. This is equivalent to using a qualifier of
/FLOAT=G_FLOAT with the SQL$MOD command.
If the command line for SQL$MOD has /FLOAT=D_FLOAT, then the
single and double precision floating point parameters are
expected to be in F-Floating and D-Floating format respectively.
SQL Module Language will convert the double precision parameters
between D-Floating and G-Floating formats for both input and
output.
If the command line for SQL$MOD has /FLOAT=IEEE_FLOAT, the single
and double precision floating point parameters are expected to
be in IEEE S-Floating and IEEE T-Floating format, respectively.
SQL Module Language will convert between these formats and the
internal F-Floating and G-Floating formats for both input and
output.
If a parameter of an SQL Module Language procedure is of a record
type, any fields of the record which are of floating point types
follow the same rules as described above.
The floating point formats of the host language program actual
parameters must agree with the format expected by the SQL Module
Language actual parameter. See the Oracle Rdb SQL Reference
Manual for information concerning actual and formal parameter
agreement.)
NOTES
Oracle Rdb always stores floating point numbers internally
using the VAX 32-bit and 64-bit types called F-Floating (F_
FLOAT) and G-Floating (G_FLOAT), respectively. This means
that when IEEE formats are used in a host language program,
Oracle Rdb converts back and forth between the VAX and IEEE
formats. There are differences in the number of available
bits in the fraction and exponent between these formats.
Additionally, the IEEE formats have certain exponent values
reserved for infinity values. These differences can cause
floating point overflow or underflow as well as rounding
errors during the conversion process. See Appendix A of the
Portable Mathematics Library in the OpenVMS Operating System
documentation for data on the maximum and minimum values for
VAX versus IEEE floating point formats.
When /FLOAT=IEEE_FLOAT is used, floating point data types
may not be imported from the Common Data Dictionary.