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.