Informats under OpenVMS |
Category: | numeric |
Width range: | 2 to 8 |
Default width: | 4 |
Decimal range: | 0 to 10 |
OpenVMS specifics: | native floating-point representation |
See: | RBw.d Informat in SAS Language Reference: Dictionary |
Syntax | |
Details | |
Examples | |
Example 1: Single- versus Double-Precision Representation | |
Example 2: Writing External Data | |
See Also |
Syntax |
RBw.d |
specifies the power of 10 by which to divide the input value. This argument is optional. If you specify d, the RBw.d informat divides the input value by the 10^{d} value. SAS uses the d value even if the input data contains decimal points.
Details |
The RBw.d informat reads numeric data that is stored in native real-binary (floating-point) notation. Numeric data for scientific calculations is often stored in floating-point notation. (SAS stores all numeric values in floating-point notation.) A floating-point value consists of two parts: a mantissa that gives the value and an exponent that gives the value's magnitude.
It is usually impossible to key in floating-point binary data directly from a terminal, but many programs write floating-point binary data. Use caution if you are using the RBw.d informat to read floating-point data created by programs other than SAS because the RBw.d informat is designed to read-only double-precision data.
Because the RBw.d informat is designed to read-only double-precision data, it supports widths of less than 8 bytes only for those applications that truncate numeric data for space-saving purposes. RB4., for example, does not expect a single-precision number that is truncated to 4 bytes.
External programs such as those written in C and FORTRAN can produce only single- or double-precision floating-point numbers. No length other than 4 or 8 bytes is allowed. The RBw.d informat allows a length of 3 through 8 bytes, depending on the storage you need to save.
The FLOAT4. informat has been created to read a single-precision, floating-point number. If you read the hexadecimal notation 3F800000 with FLOAT4., the result is a value of 1.
To read data created by a C or FORTRAN program, you need to decide on the proper informat to use. If the floating-point numbers require an 8-byte width, you should use the RB8. informat. If the floating-point numbers require a 4-byte width, you should use FLOAT4.
For more information about OpenVMS floating-point representation, see HP OpenVMS Programming Concepts Manual, Volume II, Part I, OpenVMS Programming Interfaces: Calling a System Routine.
Examples |
Consider how the value of 1 is represented in single-precision and double-precision notation. For single-precision, the hexadecimal representation of the 4 bytes of data is 3F800000 . For double-precision, the hexadecimal representation is 3FF0000000000000 . The digits at the beginning of the data are different, indicating a different method of storing the data.
#include <stdio.h> main() { FILE *fp; float x[3]; fp = fopen("test.dat","wb"); x[0] = 1; x[1] = 2; x[2] = 3; fwrite((char *)x,sizeof(float),3,fp); fclose(fp); }
The file TEST.DAT will contain, in hexadecimal notation, 3f8000004000000040400000 .
See Also |
Copyright © 2009 by SAS Institute Inc., Cary, NC, USA. All rights reserved.