<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Runtime error from OCI on OpenVMS in Operating System - OpenVMS</title>
    <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367767#M41888</link>
    <description>Hein:&lt;BR /&gt;&lt;BR /&gt;It doesn't seem to matter how the debugger looks at them:&lt;BR /&gt;&lt;BR /&gt;DBG&amp;gt; ex/float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 0.145858885894793E-313&lt;BR /&gt;DBG&amp;gt; ex/s_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: -0.4497490E-09&lt;BR /&gt;DBG&amp;gt; ex/x_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 0.191161202331074093779369080163257E-4955&lt;BR /&gt;DBG&amp;gt; ex/g_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 237.498901367188&lt;BR /&gt;DBG&amp;gt; ex/f_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 1.106933&lt;BR /&gt;DBG&amp;gt; &lt;BR /&gt;&lt;BR /&gt;Of course, none of these values are "reasonable" for the application data.  &lt;BR /&gt;&lt;BR /&gt;The c++ compile command used for the application is "cxx/nowarn/define=(VMS,VMS,__WITHOOPS,_CPLUSPLUS_)/NOOPTIMIZE/STANDARD=ARM/prefix=all/names=as_is/float=g_float". So based on the quote you provide about Oracle 10 being compiled for ieee float format and that being different from Oracle 9, this sure looks like the cause.&lt;BR /&gt;&lt;BR /&gt;This application is a "helper" application that reads the primary application's RMS ISAM DB, "normalizes" it into a relational schema, and stores it in the Oracle DB.  The primary application is compiled /float=g_float, and stores g_floats in its database.  So it looks like I need to read g_floats from the RMS files, and convert them into ieee float to be compatible with the oracle libraries on the way to the proprietary oracle floating point format.  Do you know of c RTL routines to do such a conversion?  I'll dig through the RTL manual in the morning.&lt;BR /&gt;&lt;BR /&gt;Thanks a ton Hein! I've got about 1 week to make this work before I miss a deployment window for the new Itanium boxes, and if I miss it, these new boxes will sit around for 18 months until I get another downtime shot.&lt;BR /&gt;&lt;BR /&gt;Thanks again!&lt;BR /&gt;&lt;BR /&gt;Glenn</description>
    <pubDate>Wed, 04 Mar 2009 06:24:59 GMT</pubDate>
    <dc:creator>Glenn Wolf</dc:creator>
    <dc:date>2009-03-04T06:24:59Z</dc:date>
    <item>
      <title>Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367762#M41883</link>
      <description>&lt;!--!*#--&gt;Hello.&lt;BR /&gt;&lt;BR /&gt;Environment: OpenVMS V8.3-1H1, Itanium (IA-64), Oracle Release 10.2.0.4.0&lt;BR /&gt;&lt;BR /&gt;We have ported some C++ code from Oracle 8.17.3 to 10.2.0.4.0, and moved from the OpenVMS Alpha architecture to the Itanium architecture at the same time. Our code now compiles and links and runs, but while attempting to load data into the database, we get the following error traceback (no ORA- error is produced):&lt;BR /&gt;&lt;BR /&gt;%SYSTEM-F-FLTINV_F, floating invalid fault, PC=000000000F0D7551, PS=0000001B&lt;BR /&gt;----End of Exception message&lt;BR /&gt;0 FFFFFFFF804017C2 FFFFFFFF804017C2&lt;BR /&gt;libclntsh lnxren lnxren 87529 0000000000000B11 000000000F0D7551&lt;BR /&gt;libclntsh ttcx2y ttcf2n 428454 0000000000007292 000000000DD35592&lt;BR /&gt;libclntsh ttcacs ttcacs 414366 0000000000001AB2 000000000DD276B2&lt;BR /&gt;libclntsh ttcdrv ttcdrv 1450241 00000000000051F2 000000000DD71692&lt;BR /&gt;libclntsh nioqwa nioqwa 159960 00000000000000B2 000000000D431EE2&lt;BR /&gt;libclntsh upiprv upirtrc 418201 00000000000022D2 000000000D066B72&lt;BR /&gt;libclntsh kpudfo kpuexes 403257 0000000000003F22 000000000CB07F22&lt;BR /&gt;libclntsh upiexf upiex0 402095 0000000000001C62 000000000D081742&lt;BR /&gt;libclntsh upiexf upiexn 401773 0000000000000092 000000000D07FB72&lt;BR /&gt;libclntsh oci ociexn 280403 0000000000004FC2 000000000CFCE212&lt;BR /&gt;TORRENT DATABASE exec #263 00000000000022F2 0000000000FA91B2&lt;BR /&gt;TORRENT TABLE flushCursor #1332 0000000000028332 0000000000FEF9F2&lt;BR /&gt;TORRENT TABLE flushInsertCursor #1348 0000000000023BF2 0000000000FEB2B2&lt;BR /&gt;TORRENT FILE load #819 000000000000A532 0000000000FFA3F2&lt;BR /&gt;TORRENT SCHEMA primeTables #395 0000000000007DC2 0000000000F9ABC2&lt;BR /&gt;TORRENT MAIN main #103 0000000000001112 0000000000F90412&lt;BR /&gt;&lt;BR /&gt;Any help you can provide on resolving this error would be greatly appreciated. So far, the web has not provided any insight.&lt;BR /&gt;&lt;BR /&gt;Thanks;&lt;BR /&gt;&lt;BR /&gt;Glenn</description>
      <pubDate>Fri, 27 Feb 2009 00:01:45 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367762#M41883</guid>
      <dc:creator>Glenn Wolf</dc:creator>
      <dc:date>2009-02-27T00:01:45Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367763#M41884</link>
      <description>Well, the main error is:&lt;BR /&gt;&lt;BR /&gt;"%SYSTEM-F-FLTINV_F, floating invalid fault"&lt;BR /&gt;&lt;BR /&gt;I would try to figure out the SQL statement begin executed, and inspect that for BIND VARIABLES with floating type.&lt;BR /&gt;Where does that data come from? Is it valid floating point data in itanium (IEEE) context?.&lt;BR /&gt;The program is not juggling with floating points overlayed/redefined as appropriately sized, but in-appropriatedly typed integers is it now?&lt;BR /&gt;&lt;BR /&gt;Since you can get at the code, I would check those potential floating point variables and try a simple print or even an 'add 1'. You may find the OCI is being lied to and is just an innocent messenger being told to operate on invalid data.&lt;BR /&gt;&lt;BR /&gt;Maybe you can use the debugger and SET BREAK/EXCEPTION to figure out what data element cause the FLTINV ?&lt;BR /&gt;&lt;BR /&gt;fwiw,&lt;BR /&gt;&lt;BR /&gt;Hein.</description>
      <pubDate>Fri, 27 Feb 2009 01:13:12 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367763#M41884</guid>
      <dc:creator>Hein van den Heuvel</dc:creator>
      <dc:date>2009-02-27T01:13:12Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367764#M41885</link>
      <description>I have finally gotten to the debug point where I can get debug to show me the values that I'm sending on to Oracle.  The debugger has no issues doing an ex/float of the BIND variables.&lt;BR /&gt;&lt;BR /&gt;Would you consider that reasonable proof that the bytes I'm passing around are valid IEEE floating point format?&lt;BR /&gt;&lt;BR /&gt;Thanks;&lt;BR /&gt;&lt;BR /&gt;Glenn</description>
      <pubDate>Wed, 04 Mar 2009 01:31:47 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367764#M41885</guid>
      <dc:creator>Glenn Wolf</dc:creator>
      <dc:date>2009-03-04T01:31:47Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367765#M41886</link>
      <description>&amp;gt;&amp;gt; The debugger has no issues doing an ex/float of the BIND variables.&lt;BR /&gt;&amp;gt;&amp;gt; Would you consider that reasonable proof that the bytes I'm passing around are valid IEEE floating point format?&lt;BR /&gt;&lt;BR /&gt;Actually, no. On the contrary.&lt;BR /&gt;&lt;BR /&gt;You FORCED the debugger to 'pretend' the variable was an old style float, and it seemed to macth.&lt;BR /&gt;&lt;BR /&gt;Now try examine /s_float or /x_float&lt;BR /&gt;&lt;BR /&gt;More to the point, try something like:&lt;BR /&gt;&lt;BR /&gt;DBG&amp;gt; show symb /type test&lt;BR /&gt;data TMP\main\test&lt;BR /&gt;    atomic type, IEEE single precision floating point, size: 4 bytes&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Did SET BREAK/EXCEP lead to anything useful?&lt;BR /&gt;&lt;BR /&gt;Hein.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 04 Mar 2009 03:43:15 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367765#M41886</guid>
      <dc:creator>Hein van den Heuvel</dc:creator>
      <dc:date>2009-03-04T03:43:15Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367766#M41887</link>
      <description>How did you compile the program, notably did yo use a /FLOAT option?&lt;BR /&gt;&lt;BR /&gt;Check out Metalink article 463949.1&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;It refers to:&lt;BR /&gt;&lt;A href="http://download.oracle.com/docs/cd/B19306_01/server.102/b25416/ch6.htm#sthref391" target="_blank"&gt;http://download.oracle.com/docs/cd/B19306_01/server.102/b25416/ch6.htm#sthref391&lt;/A&gt; &lt;BR /&gt;:&lt;BR /&gt;6.3.1 Compiler Options Used to Compile Oracle Database 10g &lt;BR /&gt;Oracle Database 10g is compiled with as few deviations from the default C compiler options as possible &lt;BR /&gt;and with minimal use of pragma statements. &lt;BR /&gt;&lt;BR /&gt;For the DEC C compiler on OpenVMS, the compilation options are as follows: &lt;BR /&gt;&lt;BR /&gt;/DECC/NOSTANDARD/DEBUG=TRACE/PREFIX=ALL/GRAN=LONG/NAMES=AS_IS/ &lt;BR /&gt;FLOAT=IEEE/MODE=DENORM/EXTERN=STRICT_REFDEF/NOANSI_ALIAS &lt;BR /&gt;&lt;BR /&gt;If you compile the code with /DEBUG=TRACE, then line numbers in the modules are displayed, as required, in Oracle Database 10g stack trace listings. &lt;BR /&gt;:&lt;BR /&gt;6.3.2 Floating Point Format &lt;BR /&gt;Oracle Database 10g is compiled with the IEEE floating point format supported by the C compiler. &lt;BR /&gt;The conversion routines within Oracle Database 10g translate operating system-specific floating point numbers into Oracle Database 10g internal floating point representation. &lt;BR /&gt;This is a change from Oracle Database 9i release 2 for OpenVMS. If you had an application that depended on non-IEEE defaults, then you may need to recompile.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Hein.&lt;BR /&gt;</description>
      <pubDate>Wed, 04 Mar 2009 04:05:30 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367766#M41887</guid>
      <dc:creator>Hein van den Heuvel</dc:creator>
      <dc:date>2009-03-04T04:05:30Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367767#M41888</link>
      <description>Hein:&lt;BR /&gt;&lt;BR /&gt;It doesn't seem to matter how the debugger looks at them:&lt;BR /&gt;&lt;BR /&gt;DBG&amp;gt; ex/float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 0.145858885894793E-313&lt;BR /&gt;DBG&amp;gt; ex/s_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: -0.4497490E-09&lt;BR /&gt;DBG&amp;gt; ex/x_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 0.191161202331074093779369080163257E-4955&lt;BR /&gt;DBG&amp;gt; ex/g_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 237.498901367188&lt;BR /&gt;DBG&amp;gt; ex/f_float *valueP&lt;BR /&gt;*Field::copyValue\this-&amp;gt;valueP: 1.106933&lt;BR /&gt;DBG&amp;gt; &lt;BR /&gt;&lt;BR /&gt;Of course, none of these values are "reasonable" for the application data.  &lt;BR /&gt;&lt;BR /&gt;The c++ compile command used for the application is "cxx/nowarn/define=(VMS,VMS,__WITHOOPS,_CPLUSPLUS_)/NOOPTIMIZE/STANDARD=ARM/prefix=all/names=as_is/float=g_float". So based on the quote you provide about Oracle 10 being compiled for ieee float format and that being different from Oracle 9, this sure looks like the cause.&lt;BR /&gt;&lt;BR /&gt;This application is a "helper" application that reads the primary application's RMS ISAM DB, "normalizes" it into a relational schema, and stores it in the Oracle DB.  The primary application is compiled /float=g_float, and stores g_floats in its database.  So it looks like I need to read g_floats from the RMS files, and convert them into ieee float to be compatible with the oracle libraries on the way to the proprietary oracle floating point format.  Do you know of c RTL routines to do such a conversion?  I'll dig through the RTL manual in the morning.&lt;BR /&gt;&lt;BR /&gt;Thanks a ton Hein! I've got about 1 week to make this work before I miss a deployment window for the new Itanium boxes, and if I miss it, these new boxes will sit around for 18 months until I get another downtime shot.&lt;BR /&gt;&lt;BR /&gt;Thanks again!&lt;BR /&gt;&lt;BR /&gt;Glenn</description>
      <pubDate>Wed, 04 Mar 2009 06:24:59 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367767#M41888</guid>
      <dc:creator>Glenn Wolf</dc:creator>
      <dc:date>2009-03-04T06:24:59Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367768#M41889</link>
      <description>&lt;A href="http://h71000.www7.hp.com/doc/82final/5933/5933pro_001.html#5933cnvout_1" target="_blank"&gt;http://h71000.www7.hp.com/doc/82final/5933/5933pro_001.html#5933cnvout_1&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;OTS$CNVOUT to convert to char, then&lt;BR /&gt;OTS$CVT_T_xxx to convert to ieee float&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://h71000.www7.hp.com/doc/82final/5933/5933pro_002.html#5933cvt_t_x" target="_blank"&gt;http://h71000.www7.hp.com/doc/82final/5933/5933pro_002.html#5933cvt_t_x&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Wim</description>
      <pubDate>Wed, 04 Mar 2009 10:03:23 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367768#M41889</guid>
      <dc:creator>Wim Van den Wyngaert</dc:creator>
      <dc:date>2009-03-04T10:03:23Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367769#M41890</link>
      <description>Well, you first have to ask yourself how muxh or little work it would be to convert the main application to use IEEE. That's where it where it should. A main reason to want to be gfloat is file stored data, but that's not the case here, as the data is already stored in Oracle right? An other reason is exception (NaN) handling. I can not judge how much work that will be.&lt;BR /&gt;The application chunk suffering the exception does not care, as it is just a pass-thru layer to OCI.&lt;BR /&gt;&lt;BR /&gt;If full conversion to IEEE is not feasible in the time remaining, then why not make the Oracle wrapper layer convert all floats to numbers. Oracle does not store them as floats any. If you check the OCI documentation for HOST VARIABLES you'll see CHAR merrily next to FLOAT for compatile with the DB data type: NUMBER(x,y).&lt;BR /&gt;&lt;BR /&gt;I do not expect any preceivable performance or space savings from 'pre-converting'. And OCI performance will probably be much the same no matter which host variable type is used, but you can (should) confirm with Oracle what the 'best' host variable type is for NUMBER(x,y) ... other than INTEGER.&lt;BR /&gt;&lt;BR /&gt;Some DCL or PERL script can probably automate the conversion injections, or 'generate' them.&lt;BR /&gt;&lt;BR /&gt;Given the time line, I would urge you to try and engage last minute outside help. An other pair of eyes from someone who does not have the application itself to worry on and can focus just on this. Several folks in this conference come to mind, many others are out there. (Not myself,... I'm out consulting this week). Even if they end up not being able to solve the problem in the time remaining, at least you will know you did everything you could (wouda, couda shouda),&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;&lt;BR /&gt;Hein van den Heuvel ( at gmail dot com )&lt;BR /&gt;HvdH Performance Consulting.</description>
      <pubDate>Wed, 04 Mar 2009 12:16:36 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367769#M41890</guid>
      <dc:creator>Hein van den Heuvel</dc:creator>
      <dc:date>2009-03-04T12:16:36Z</dc:date>
    </item>
    <item>
      <title>Re: Runtime error from OCI on OpenVMS</title>
      <link>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367770#M41891</link>
      <description>Thanks to all who responded.  I've resolved the issue by sprintf'ing the G_FLOAT (actually, they are 4-byte F_FLOAT) values to a string, and putting the string in the bind variable.  I'm not 100% satisfied with this approach, as some precision is lost.  &lt;BR /&gt;&lt;BR /&gt;I'd like to re-implement using CVT$CONVERT_FLOAT to convert directly from F_FLOAT to S_FLOAT, which will be simpler in the long run.  &lt;BR /&gt;&lt;BR /&gt;As to converting the app to use IEEE internally, I've got 8 installations around the world running 24x7, with hundreds of gigabytes of data files that would need to be converted.  At this point, there's no compelling reason to take on this conversion exercise.&lt;BR /&gt;&lt;BR /&gt;Thanks again!&lt;BR /&gt;&lt;BR /&gt;Glenn</description>
      <pubDate>Tue, 17 Mar 2009 17:00:10 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-openvms/runtime-error-from-oci-on-openvms/m-p/4367770#M41891</guid>
      <dc:creator>Glenn Wolf</dc:creator>
      <dc:date>2009-03-17T17:00:10Z</dc:date>
    </item>
  </channel>
</rss>

