NonStop Server for Java 5.1 Programmer's Reference

Floating-Point Support
By default, NonStop Server for Java 3.1.x and earlier versions converted any floating-point value that
crossed the Java Native Interface (JNI) boundary to a TNS float. This default could be overridden by
supplying a line in the file TandemVMClassFP.properties. If a particular class needed IEEE
floating-point values passed to its JNI code instead of TNS float values; users added a property (with the
name of the class being the name of the property) to this file. Users also set the value of the property to
IEEE_FP to indicate that they wanted IEEE floating-point values passed to their JNI code or
TANDEM_FP to indicate that they wanted TNS floating-point values passed to their JNI code.
Beginning with version 1 of the NonStop Server for Java 4 (based on J2SE SDK 1.4.0), the product does
not convert any floating-point values passed through JNI calls to TNS floating-point values. In addition,
a user program cannot specify the floating-point type by using the TandemVMClassFP.properties
file. Thus, any user-program or Java based product with JNI code that obtains floating-point values from
Java must call the NSK_FLOAT_* Guardian routines to convert these values to TNS floats. Likewise,
any float value passed to Java must be an IEEE float value. The following table illustrates the NonStop
Server for Java 4 applications floating-point usage compared to earlier versions.
Summary of Floating Point Support
NSJ 2.x NSJ 3.x NSJ 4.x NSJ 5.x
Java floating-point
usage
IEEE float IEEE float IEEE float IEEE float
JNI code floating
point
Either IEEE
or Tandem
float
Either IEEE
or Tandem
float
IEEE float IEEE float
JNI calling
convention
Tandem float
Either IEEE
or Tandem
float
IEEE float IEEE float
Java compiler flag Tandem float IEEE float IEEE float IEEE float
Java linker flag Tandem float Tandem float IEEE float IEEE float
Since NonStop Server for Java 3.1.x and earlier set the linker flag for the process to TNS float, any use
of the C runtime library used routines that handled TNS floats. For NonStop Server for Java 4 , 5 and 5.1
versions, the linker flags described under Linker and Compiler Options are used to specify IEEE floating
point. Accordingly, the C runtime library uses routines that handle IEEE floating point.
For NonStop Server for Java 4 , 5 and 5.1 versions, any C runtime library calls such as sprintf or
sscanf, made from JNI code, assumes IEEE float values and calling conventions. For example, assume
that JNI code, written for a previous version of Java, converts a TNS floating-point value to a string,
which is then passed to Java. To migrate the program, you must change the JNI code to convert the TNS