HP Fortran for OpenVMS
HP Fortran for OpenVMS
• ELEMENTAL user-defined subprograms (a restricted
form of a pure procedure)
• Pointer initialization (initial value)
• The NULL intrinsic to nullify a pointer
• Derived-type structure initialization
• CPU_TIME intrinsic subroutine
• KIND argument to CEILING and FLOOR intrinsics
• Nested WHERE constructs, masked ELSEWHERE
statement, and named WHERE constructs
• Comments allowed in namelist input
• Generic identifier in END INTERFACE statements
• Minimal width field editing using a numeric edit de-
scriptor with 0 width
• Detection of Obsolescent and/or Deleted features
listed in the Fortran 95 standard. HP Fortran flags
these obsolescent and deleted features, but fully sup-
ports them.
HP Fortran includes the following features and enhance-
ments:
• CDD (Common Data Dictionary) support and DML
(Data Manipulation Language) support, formerly only
available in the old Fortran 77 (/old_f77) compiler, are
now available in the Fortran 90/95 compiler
• Full support for 64-bit address space, including 64-bit
static space
• Support for providing cross-reference information to
the DEC Source Code Analyzer component of DEC-
set for OpenVMS
• Support for linking against static and shared libraries
• Support for creating shareable code to be put into a
shared library
• Support for stack-based storage
• Support for dynamic memory allocation
• Support for reading and writing binary data files in
nonnative formats, including IEEE® (little-endian and
big-endian), VAX, IBM® System\360, and CRAY®
integer and floating point formats
• User control over IEEE floating point exception han-
dling, reporting, and resulting values
• Control for memory boundary alignment of items in
COMMON and fields in structures and warnings for
unaligned data
• Directives to control listing page titles and subtitles,
object file identification field, COMMON and record
field alignment, and some attributes of COMMON
blocks
• Ability to CALL an external function subprogram
• 7200 Character Statement Length
• Free form unlimited line length
• Mixing Subroutines/Functions in Generic Interfaces
• Composite data declarations using STRUCTURE,
END STRUCTURE, and RECORD statements, and
access to record components through field refer-
ences
• Explicit specification of storage allocation units for
data types such as:
INTEGER*4
LOGICAL*4
REAL*4
REAL*8
COMPLEX*8
• Support for 64-bit signed integers using INTEGER*8
and LOGICAL*8
• Support for 128-bit floating-point real numbers (reals)
using REAL*16 and COMPLEX*32
• A set of data types:
— BYTE
— LOGICAL*1, LOGICAL*2, LOGICAL*4, LOGI-
CAL*8
— INTEGER*1, INTEGER*2, INTEGER*4, INTE-
GER*8
— REAL*4, REAL*8, REAL*16
— COMPLEX*8, COMPLEX*16, DOUBLE COM-
PLEX, COMPLEX*32
— POINTER (CRAY style)
• Data statement style initialization in type declaration
statements
• AUTOMATIC and STATIC statements
• Bit constants to initialize LOGICAL, REAL, and INTE-
GER values and participate in arithmetic and logical
expressions
• Built-in functions %LOC, %REF, %VAL, and %DE-
SCR
• VOLATILE statement
• Bit manipulation functions
• Binary, hexadecimal, and octal constants and Z and
O format edit descriptors applicable to all data types
• I/O unit numbers that can be any nonnegative INTE-
GER*4 value
• Variable amounts of data can be read from and writ-
ten to ˆSTREAM˜ files, which contain no record de-
limiters
• ENCODE and DECODE statements
2