4. Embedded SQL for Fortran : Sample Application Compiled with /float=ieee Flag (VMS)
 
Share this page                  
Sample Application Compiled with /float=ieee Flag (VMS)
This sample application illustrates the use of the /float=ieee flag when compiling embedded SQL programs on VMS.
Setup:
createdb testdb
sql testdb <create.sql
Create.sql does the following:
drop table test1;
\p\g
create table test1 ( col1 float8 );
\p\g
insert into test1 (col1) values (1.400) ;
\p\g
Fortran sample program PROG01.SF:
Program PROG01
 
implicit none ! NEW
 
exec sql include sqlca
 
exec sql include sqlda
 
exec sql begin declare section
   real*8 testfloat
   real*8 testafter
   character*10 database
   character*100 errmsg
exec sql end declare section
 
print *, ' - This is a test program - testing REAL*8 data type !! '
print *, ' '
 
testfloat = 1.5
 
database = 'testdb'
 
print *, ' - Connecting to database : ', database
print *, ' ' ! NEW
 
exec sql whenever sqlerror call sqlprint
 
exec sql connect :database
 
print *, ' - Delete any records that are :' , testfloat
print *, ' ' ! NEW
 
exec sql delete from test1 where col1 = :testfloat
 
print *, ' - Inserting value ', testfloat, 'in table : test1 '
print *, ' ' ! NEW
 
exec sql insert into test1 (col1) values (:testfloat)
 
exec sql commit
 
 
exec sql select col1 into :testafter from test1
         where col1 = :testfloat
 
print *, ' - Returned value is ', testafter
 
exec sql disconnect
 
end
The precompile and compile script:
$! precompiling
$!
$ esqlf prog01
$!
$! Compiling with the required IEEE qualifier
$!
$ for /float=IEEE/align/extend prog01
$!
$ link prog01.obj,ii_system:[ingres.files]esql.opt/opt
$!
$ run prog01.exe
Example of output from the program when compiled with the /float=ieee qualifier:
select hex(col1) from test1\g
Executing . . .
 
 
+----------------+
|col1            |
+----------------+
|3FF6666666666666|
|3FF8000000000000|
|0000000000004018|
+----------------+
(3 rows)
continue
*
select * from test1\g
Executing . . .
 
 
+-----------+
|col1       |
+-----------+
|      1.400|
|      1.500|
|      0.000|
+-----------+
(3 rows)
continue
*
Example of output from the program when compiled without the /float=ieee qualifier:
select hex(col1) from test1\g
Executing . . .
 
 
+----------------+
|col1            |
+----------------+
|3FF6666666666666|
|3FF8000000000000|
|0000000000004018|
+----------------+
(3 rows)
continue
*
select * from test1\g
Executing . . .
 
+-----------+
|col1       |
+-----------+
|      1.400|
|      1.500|
E_MO003C Unknown exception 00011301: current query program aborted
E_LQ002B 'rollback' may not be nested within a data retrieval loop.
E_LQ002B 'commit' may not be nested within a data retrieval loop.