Data Representation

Visual Fortran expects numeric data to be in native little endian order, in which the least-significant, right-most zero bit (bit 0) or byte has a lower address than the most-significant, left-most bit (or byte). For information on using nonnative big endian and Compaq VAX floating-point formats, see Converting Unformatted Numeric Data.

The symbol :A in any figure specifies the address of the byte containing bit 0, which is the starting address of the represented data element.

The following table lists the intrinsic data types used by Visual Fortran, the storage required, and valid ranges. For information on declarating Fortran intrinsic data types, see Type Declaration Statements. For example, the declaration INTEGER(4) is the same as INTEGER(KIND=4) and INTEGER*4.

Compaq Fortran Data Types and Storage

Data Type  Storage  Description 
BYTE
INTEGER(1)
1 byte (8 bits) A BYTE declaration is a signed integer data type equivalent to INTEGER(1).
INTEGER See INTEGER(2), INTEGER(4), and INTEGER(8). Signed integer, either INTEGER(2), INTEGER(4), or INTEGER(8). The size is controlled by the /integer_size:nn compiler option. The default is /integer_size:32 (INTEGER(4)).
INTEGER(1) 1 byte (8 bits) Signed integer value from -128 to 127.
INTEGER(2) 2 bytes (16 bits) Signed integer value from -32,768 to 32,767.
INTEGER(4) 4 bytes (32 bits) Signed integer value from -2,147,483,648 to 2,147,483,647.
INTEGER(8) 8 bytes (64 bits) Signed integer value from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.
REAL(4)
REAL
4 bytes (32 bits) Single-precision real floating-point values in IEEE S_floating format ranging from 1.17549435E-38 to 3.40282347E38. Values between 1.17549429E-38 and 1.40129846E-45 are denormalized (subnormal).
REAL(8)
DOUBLE PRECISION
8 bytes (64 bits) Double-precision real floating-point values in IEEE T_floating format ranging from 2.2250738585072013D-308 to 1.7976931348623158D308. Values between 2.2250738585072008D-308 and 4.94065645841246544D-324 are denormalized (subnormal).
COMPLEX(4)
COMPLEX
8 bytes (64 bits) Single-precision complex floating-point values in a pair of IEEE S_floating format parts: real and imaginary. The real and imaginary parts range from 1.17549435E-38 to 3.40282347E38. Values between 1.17549429E-38 and 1.40129846E-45 are denormalized (subnormal).
COMPLEX(8)
DOUBLE COMPLEX
16 bytes (128 bits) Double-precision complex floating-point values in a pair of IEEE T_floating format parts: real and imaginary. The real and imaginary parts each range from 2.2250738585072013D-308 to 1.7976931348623158D308. Values between 2.2250738585072008D-308 and 4.94065645841246544D-324 are denormalized (subnormal).
LOGICAL See LOGICAL(2), LOGICAL(4), and LOGICAL(8). Logical value, either LOGICAL(2), LOGICAL(4), or LOGICAL(8). The size is controlled by the /integer_size:nn compiler option. The default is /integer_size:32 (LOGICAL(4)).
LOGICAL(1) 1 byte (8 bits) Logical values .TRUE. or .FALSE.
LOGICAL(2) 2 bytes (16 bits) Logical values .TRUE. or .FALSE.
LOGICAL(4) 4 bytes (32 bits) Logical values .TRUE. or .FALSE.
LOGICAL(8) 8 bytes (64 bits) Logical values .TRUE. or .FALSE.
CHARACTER 1 byte (8 bits) per character Character data represented by character code convention. Character declarations can be in the form CHARACTER(LEN=n) or CHARACTER*n, where n is the number of bytes or n is (*) to indicate passed-length format.
HOLLERITH 1 byte (8 bits) per Hollerith character Hollerith constants.

In addition, you can define binary (bit) constants as explained in the Language Reference.

The following sections discuss the intrinsic data types in more detail: