2018-05-01 12:50:34 -07:00
|
|
|
<!--
|
2019-02-08 10:39:10 -08:00
|
|
|
Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
|
2018-05-01 12:50:34 -07:00
|
|
|
-->
|
|
|
|
|
2018-07-17 16:58:21 -07:00
|
|
|
As a general principle, this compiler will accept by default and
|
|
|
|
without complaint many legacy features, extensions to the standard
|
|
|
|
language, and features that have been deleted from the standard,
|
|
|
|
so long as the recognition of those features would not cause a
|
|
|
|
standard-conforming program to be rejected or misinterpreted.
|
2018-03-20 10:59:07 -07:00
|
|
|
|
2018-07-17 16:58:21 -07:00
|
|
|
Other non-standard features, which do conflict with the current
|
|
|
|
standard specification of the Fortran programming language, are
|
|
|
|
accepted if enabled by command-line options.
|
|
|
|
|
|
|
|
Extensions, deletions, and legacy features supported by default
|
|
|
|
===============================================================
|
2018-03-20 10:59:07 -07:00
|
|
|
* Tabs in source
|
|
|
|
* `<>` as synonym for `.NE.` and `/=`
|
|
|
|
* `$` and `@` as legal characters in names
|
|
|
|
* Initialization in type declaration statements using `/values/`
|
|
|
|
* Kind specification with `*`, e.g. `REAL*4`
|
|
|
|
* `DOUBLE COMPLEX`
|
|
|
|
* Signed complex literal constants
|
2018-07-17 16:58:21 -07:00
|
|
|
* DEC `STRUCTURE`, `RECORD`, `UNION`, and `MAP`
|
2018-03-20 10:59:07 -07:00
|
|
|
* Structure field access with `.field`
|
|
|
|
* `NCHARACTER` type and `NC` Kanji character literals
|
|
|
|
* `BYTE` as synonym for `INTEGER(KIND=1)`
|
|
|
|
* Quad precision REAL literals with `Q`
|
|
|
|
* `X` prefix/suffix as synonym for `Z` on hexadecimal literals
|
|
|
|
* `B`, `O`, `Z`, and `X` accepted as suffixes as well as prefixes
|
|
|
|
* Triplets allowed in array constructors
|
2018-07-18 12:54:30 -07:00
|
|
|
* Old-style `PARAMETER pi=3.14` statement without parentheses
|
2018-03-20 10:59:07 -07:00
|
|
|
* `%LOC`, `%VAL`, and `%REF`
|
|
|
|
* Leading comma allowed before I/O item list
|
|
|
|
* Empty parentheses allowed in `PROGRAM P()`
|
|
|
|
* Missing parentheses allowed in `FUNCTION F`
|
|
|
|
* Cray based `POINTER(p,x)`
|
2018-07-17 16:58:21 -07:00
|
|
|
* Arithmetic `IF`. (Which branch should NaN take? Fall through?)
|
2018-03-20 10:59:07 -07:00
|
|
|
* `ASSIGN` statement, assigned `GO TO`, and assigned format
|
|
|
|
* `PAUSE` statement
|
|
|
|
* Hollerith literals and edit descriptors
|
|
|
|
* `NAMELIST` allowed in the execution part
|
|
|
|
* Omitted colons on type declaration statements with attributes
|
|
|
|
* COMPLEX constructor expression, e.g. `(x+y,z)`
|
|
|
|
* `+` and `-` before all primary expressions, e.g. `x*-y`
|
|
|
|
* `.NOT. .NOT.` accepted
|
|
|
|
* `NAME=` as synonym for `FILE=`
|
|
|
|
* Data edit descriptors without width or other details
|
|
|
|
* `D` lines in fixed form as comments or debug code
|
2019-03-22 15:08:16 -07:00
|
|
|
* `CONVERT=` on the OPEN and INQUIRE statements
|
|
|
|
* `DISPOSE=` on the OPEN and INQUIRE statements
|
2018-07-12 15:32:31 -07:00
|
|
|
* Leading semicolons are ignored before any statement that
|
|
|
|
could have a label
|
2018-07-17 16:58:21 -07:00
|
|
|
* The character `&` in column 1 in fixed form source is a variant form
|
|
|
|
of continuation line.
|
2019-02-15 12:20:30 -08:00
|
|
|
* Character literals as elements of an array constructor without an explicit
|
|
|
|
type specifier need not have the same length; the longest literal determines
|
|
|
|
the length parameter of the implicit type, not the first.
|
2019-03-14 14:51:40 -07:00
|
|
|
* Outside a character literal, a comment after a continuation marker (&)
|
|
|
|
need not begin with a comment marker (!).
|
2019-03-15 15:19:27 -07:00
|
|
|
* Classic C-style /*comments*/ are skipped, so multi-language header
|
|
|
|
files are easier to write and use.
|
2019-03-22 14:27:18 -07:00
|
|
|
* $ and \ edit descriptors are supported in FORMAT to suppress newline
|
|
|
|
output on user prompts.
|
2019-05-09 10:04:46 -07:00
|
|
|
* REAL variable and bounds in DO loops
|
2019-05-30 13:31:11 -07:00
|
|
|
* Integer literals without explicit kind specifiers that are out of range
|
|
|
|
for the default kind of INTEGER are assumed to have the least larger kind
|
|
|
|
that can hold them, if one exists.
|
2019-06-03 10:51:51 -07:00
|
|
|
* BOZ literals can be used as INTEGER values in contexts where the type is
|
|
|
|
unambiguous (including the right hand sides of assigments and initializations
|
|
|
|
of INTEGER entities).
|
2018-07-17 16:58:21 -07:00
|
|
|
|
|
|
|
Extensions supported when enabled by options
|
|
|
|
--------------------------------------------
|
|
|
|
* C-style backslash escape sequences in quoted CHARACTER literals
|
|
|
|
(but not Hollerith) [-fbackslash]
|
|
|
|
* Logical abbreviations `.T.`, `.F.`, `.N.`, `.A.`, `.O.`, and `.X.`
|
|
|
|
[-flogical-abbreviations]
|
|
|
|
* `.XOR.` as a synonym for `.NEQV.` [-fxor-operator]
|
2018-03-20 10:59:07 -07:00
|
|
|
|
|
|
|
Extensions and legacy features deliberately not supported
|
|
|
|
---------------------------------------------------------
|
|
|
|
* `.LG.` as synonym for `.NE.`
|
|
|
|
* `REDIMENSION`
|
|
|
|
* Allocatable `COMMON`
|
|
|
|
* Expressions in formats
|
|
|
|
* `ACCEPT` as synonym for `READ *`
|
2018-03-23 15:14:52 -07:00
|
|
|
* `TYPE` as synonym for `PRINT`
|
2018-03-20 10:59:07 -07:00
|
|
|
* `ARRAY` as synonym for `DIMENSION`
|
|
|
|
* `VIRTUAL` as synonym for `DIMENSION`
|
|
|
|
* `ENCODE` and `DECODE` as synonyms for internal I/O
|
|
|
|
* `IMPLICIT AUTOMATIC`, `IMPLICIT STATIC`
|
|
|
|
* Default exponent of zero, e.g. `3.14159E`
|
|
|
|
* Characters in defined operators that are neither letters nor digits
|
|
|
|
* `B` suffix on unquoted octal constants
|
2018-10-16 14:42:22 -07:00
|
|
|
* `Z` prefix on unquoted hexadecimal constants (dangerous)
|
2019-06-03 10:51:51 -07:00
|
|
|
* `T` and `F` as abbreviations for `.TRUE.` and `.FALSE.` in DATA (PGI/XLF)
|
2019-02-08 10:39:10 -08:00
|
|
|
* Use of host FORMAT labels in internal subprograms (PGI-only feature)
|
2019-05-30 12:08:06 -07:00
|
|
|
* ALLOCATE(TYPE(derived)::...) as variant of correct ALLOCATE(derived::...) (PGI only)
|
2019-06-04 14:51:56 -07:00
|
|
|
* USE association of a procedure interface within that same procedure's definition
|