Table A-1 shows the Compaq extensions to Fortran 90.
Compaq Fortran 77 Extension | KAP | Compaq Fortran 90 Compiler |
---|---|---|
Language Elements and Source Form | ||
END can be continued across lines | Yes | Yes |
99 continuation lines (in free format) | Yes | Yes |
99 continuation lines (in fixed format) | Yes | Yes |
\ treated as escape | ||
$ allowed in names | Yes | Yes |
ASCII characters x'a1' to x'fe' valid | Yes | Yes |
D debug lines (in fixed form only) | Yes | Yes |
TAB character treated as whitespace | Yes | Yes |
Leading _ allowed in names | Yes | |
Variable names larger than 31 characters | ||
Data Types and Attributes | ||
INTEGER*8, LOGICAL*8 | Yes | Yes |
REAL*16 | Yes | Yes |
Size of the largest character is 2**31 | Yes | Yes |
DOUBLE COMPLEX intrinsic type | Yes | Yes |
*typelength specifier | Yes | Yes |
AUTOMATIC attribute and statement | Yes | Yes |
STATIC attribute and statement | Yes | Yes |
BYTE intrinsic type | Yes | Yes |
BYTE treated same as INTEGER | Yes | Yes |
BYTE treated same as LOGICAL | Yes | Yes |
COMPLEX*32 | ||
Cray POINTER | Yes | Yes |
VIRTUAL attribute and statement | Yes | Yes |
VOLATILE attribute and statement | Yes | Yes |
BYTE treated same as CHARACTER | ||
Cray style boolean constants | ||
Cray Character POINTER | ||
IMPLICIT STATIC and AUTOMATIC | Yes | |
IMPLICIT UNDEFINED | ||
VAX STYLE parameter statement | Yes | Yes |
VAX structure, UNION, MAP, RECORD declarations | Yes | Yes |
Constants, Declarations, and Initialization | ||
Statement function with structure constructor | Yes | Yes |
Hollerith constants in initialization expressions | Yes | Yes |
//Initializer | Yes | Yes |
Equivalence Character and non- Character | Yes | Yes |
Hollerith allowed to initialize COMPLEX | Yes | Yes |
Linear subscript notation in Equivalence | Yes | Yes |
Multiple SAVEs without arguments | Yes | |
Named constants allowed to initialize COMPLEX | Yes | Yes |
Trailing octal and hexadecimal notation | Yes | Yes |
Typeless character treated as Hollerith | Yes | Yes |
Cray pointee as element in derived type | Yes | Yes |
Cray POINTER as element in derived type | ||
Cray POINTER with TARGET attribute | Yes | Yes |
Equivalence using sequenced derived types | Yes | |
Scalar subobject allowed in DATA | Yes | |
T and F (for .true. and .false. in DATA and initialization expressions) | Yes | |
Typeless constants in initialization expressions | Yes | Yes |
Array Concepts | ||
Underindex of arrays | Yes | |
Overindexing of arrays | ||
[] form for array constructors | Yes | |
Array with up to 20 dimension | ||
Linearized array constructor | Yes | |
Expressions and Assignment | ||
.XOR same as .NEQ | Yes | Yes |
Binary constant allowed in arithmetic expression | Yes | Yes |
Bit mask operations on Cray POINTER variables | Yes | Yes |
Bit mask operations on integer constants and variables | Yes | Yes |
Bit mask operations on typeless constants | Yes | Yes |
Hollerith in arithmetic expressions | Yes | Yes |
Hollerith allowed in relational expressions | Yes | Yes |
.A. .O. .N. for .AND. .OR. .NOT. | Yes | |
Adjacent arithmetic operations | Yes | Yes |
Bit mask operations on real constants and variables | ||
INTEGER and LOGICAL intermixing | Yes | Yes |
Controlling Execution | ||
Extended range DO loops | Yes | Yes |
Real can be used in integer contexts like RETURN, computed GOTO, array bounds | Yes | Yes |
& in alternate return (in fixed form only) | Yes | |
Input and Output Processing | ||
ENCODE and DECODE I/O statements | Yes | Yes |
'Record specifier | Yes | Yes |
Namelist with internal files | Yes | |
VAX ACCEPT, REWRITE, and DELETE statements | Yes | Yes |
VAX OPEN and CLOSE staement specifiers | Yes | Yes |
VAX TYPE I/O statement | Yes | Yes |
VAX UNLOCK, FIND, and DEFINEFILE statements | Yes | Yes |
Input and Output Editing | ||
$ edit descriptor | Yes | Yes |
Q data edit_descriptor | Yes | Yes |
S edit descriptor | Yes | Yes |
h edit_descriptor | Yes | Yes |
X without position as edit descriptor | Yes | Yes |
Comma optional in format expression | Yes | |
Ew.dQe. Qw.d, Fw.dQe edit descriptor | Yes | Yes |
Variable <> format expressions | Yes | Yes |
Non-character format expression | Yes | Yes |
Program Units | ||
PROGRAM can have argument list | Yes | |
RETURN as end in main program | ||
Using Procedures | ||
%ref and %val | Yes | Yes |
PURE functions | Yes | |
%loc | Yes | Yes |
References to RECURSIVE FUNCTION name followed by 0 are treated as a function call even when the RESULT is not specified as long as the function is not array valued | Yes | |
Function result can have SAVE attribute | ||
Intrinsic Procedures | ||
MAXLOC and MINLOC accept DIM=argument | Yes | |
Scope, Association, and Definition | ||
COMMON block can be initialized outside of BLOCK DATA | Yes | Yes |
Named COMMON in multiple BLOCK DATA | Yes | Yes |
Up to 26 unnamed block data | Yes | |
COMMON block can have same name as program | Yes |
Copyright © Digital Equipment Corporation. 1999. All Rights Reserved.