HP Fortran for OpenVMS
HP Fortran for OpenVMS
• ACCEPT, TYPE, and REWRITE input/output state-
ments
• DEFINE FILE, UNLOCK, and DELETE statements
• USEROPEN subroutine invocation at file OPEN time
• Support for reading nondelimited character strings as
input for character NAMELIST items
• Debug statements in source
• Generation of a source listing file with optional ma-
chine code representation of the executable source
• Variable format expressions in a FORMAT statement
• Optional run-time bounds checking of array sub-
scripts and character substrings
• 31-character identifiers that can include dollar sign
($) and underscore (_)
• Support for executing in-line assembler code using
the ASM intrinsics (Alpha only)
• Support for the supercomputer intrinsics POPCNT,
POPPAR, LEADZ, TRAILZ, and MULT_HIGH
• Language elements that support the various ex-
tended range and extended precision floating point
architectural features:
— 32-bit VAX F_floating data type, with an 8-bit ex-
ponent and 24-bit mantissa, which provides a
range of 0.293873588E-38 to 1.7014117E38 and
a precision of typically 7 decimal digits. Calcu-
lations with F_floating data on I64 are performed
using the S_floating data type..
— 64-bit VAX D_floating data type, with an 8-
bit exponent and 56-bit mantissa, which pro-
vides a range of 0.2938735877055719D-38 to
1.70141183460469229D38 and a precision of typ-
ically 16 decimal digits. Calculations with D_
floating data on Alpha systems use G_floating
precision (53-bit instead of 56-bit mantissa). Cal-
culations with D_floating data on I64 are per-
formed using the T_floating data type.
— 64-bit VAX G_floating data type, with an 11-
bit exponent and 53-bit mantissa, which pro-
vides a range of 0.5562684646268004D-308 to
0.89884656743115785407D308 and a precision
of typically 15 decimal digits. Calculations with
G_floating data on I64 are performed using the
T_floating data type.
— 32-bit IEEE S_floating data type, with an 8-
bit exponent and 24-bit mantissa, which pro-
vides a range of 1.17549435E-38 (normalized) to
3.40282347E38 (the IEEE denormalized limit is
1.40129846E-45) and a precision of typically 7
decimal digits
— 64-bit IEEE T_floating data type, with an 11-bit
exponent and 53-bit mantissa, which provides
a range of 2.2250738585072013D-308 (normal-
ized) to 1.7976931348623158D308 (the IEEE de-
normalized limit is 4.94065645841246544D-324)
and a precision of typically 15 decimal digits
— 128-bit IEEE extended Alpha X_floating data type,
with a 15-bit exponent and a 113-bit mantissa,
which provides a range of approximately 6.48Q-
4966 to 1.18Q4932 and a precision of typically 33
decimal digits
— The following combinations of floating types may
be specified:
— F, G and X (the default on Alpha)
— F, D and X (VAX)
— S, T and X (IEEE) (the default on I64)
• Command line control for:
— The size of default INTEGER, REAL, and DOU-
BLE PRECISION data items
— The levels and types of optimization to be applied
to the program
— The directories to search for INCLUDE files
— Inclusion or suppression of various compile-time
warnings
— Inclusion or suppression of run-time checking for
various I/O and computational errors
— Control over whether compilation terminates after
a specific number of errors has been found
— Choosing whether executing code will be thread-
reentrant
• Internal procedures can be passed as actual argu-
ments to procedures
• Kind types for all of the hardware-supported data
types:
— For 1-, 2-, 4-, and 8-byte LOGICAL data:
LOGICAL (KIND=1)
LOGICAL (KIND=2)
LOGICAL (KIND=4)
LOGICAL (KIND=8)
— For 1-, 2-, 4-, and 8-byte INTEGER data:
INTEGER (KIND=1)
INTEGER (KIND=2)
INTEGER (KIND=4)
INTEGER (KIND=8)
— For 4-, 8-, and 16-byte REAL data:
REAL (KIND=4)
REAL (KIND=8)
REAL (KIND=16)
3