HP Fortran Programmer Guide (766160-001, March 2014)
The HP Fortran version of the TIMEintrinsic takes a CHARACTER* argument; it will not accept an
integer. Other intrinsics are similarly affected.
Procedure calls and definitions
When defining a procedure or making a procedure call, HP Fortran makes the following
requirements, which HP FORTRAN 77™ overlooks:
• Function references must include the parentheses for the argument list, even when no arguments
are supplied. For example, if foois a user-defined function returning CHARACTER*10, HP
FORTRAN 77 permitsLEN(foo) and returns 10. HP Fortran requires LEN(foo()).
• The argument list must not contain any extraneous commas, which HP FORTRAN 77 allows
as “placeholders” for missing arguments. For example, the following is acceptable to f77 but
not f90:
call foo (a,)
To specify optional arguments in HP Fortran, use the OPTIONAL statement.
• The SYSTEM INTRINSIC directive, by which HP FORTRAN 77 determines interfaces, is not
supported by HP Fortran.
• In HP Fortran, recursive procedures must be so declared with the RECURSIVEkeyword; HP
FORTRAN 77 allows recursive procedures by default.
Data types and constants
The following HP FORTRAN 77™ extensions for data types and constants are not supported by
HP Fortran:
• Double precision as the default storage for floating-point constants; see “Floating-point
constants” (page 132).
• I andJ integer suffixes. To express the HP FORTRAN 77™ constant 10I(or I*2) in HP
Fortran™, use 10_2; for 10J(orJ*4), use 10_4.
• Use of the 8#n and 16#n for octal and hex constants, respectively. In HP Fortran, use O"n"
for octal constants and Z"n" for hexadecimal constants.
• BOZ constants (that is, constants in binary, octal, or hexadecimal format) in
COMPLEXexpressions.
• Non-integer array bounds and character length specifiers
• Constant expressions that contain the **(exponentiation) operator, as in PARAMETER
(RV=1**1.2).
• Use of thePARAMETER statement without parentheses, as in
PARAMETER i = 1
In free format, f90 treats this statement as an error. In fixed format, f90treats it as an
assignment, identical to:
PARAMETERi = 1
In HP Fortran, use PARAMETER (i=1) instead.
• Use of theDATA statement to initialize integers with strings, as in:
DATA i /"abcd"/
• Use of COMPLEX(16)temporaries. For example, given the declarations:
COMPLEX(KIND=8) :: foo
REAL(KIND=16) :: bar
Incompatibilities with HP FORTRAN 77 133