FORTRAN PROGRAMMING ENVIRONMENT FEATURES

FPE HOME | Directives | Double Options | Format | Functions | Operators | Options | Recommend | Source | Statements

STATEMENT TYPES AVAILABLE

ABSOLUTE declare variable with an absolute address
  Where pointers are available, can declare a pointered variable and then set the pointer to the desired absolute address.
syntax ABSOLUTE variable(address)
CIVIC Available.
ACCEPT read from standard input
  An old form of read available some places for backward compatability.
syntax ACCEPT format [,list]
ACCEPT namelist
Fortran 77 Not available.
Fortran 90 Not available.
IBM XLF Not available.
CIVIC Not available.
CF77 Not available.
CF90 Not available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
ADDRESS declare address variables
  Available only in CIVIC. Elsewhere, can use integer with assign statement to replace the most common usage.
syntax ADDRESS varlist
CIVIC Available.
ALL INTEGER establish implicit integer typing
  An early alternative for IMPLICIT INTEGER(A-Z)
syntax ALL INTEGER
CIVIC Available.
ALLOCATE allocate space for indicated variables
  Allocate storage for pointer based variables and allocatable arrays.
syntax ALLOCATE(namelist [,STAT=var])
Fortran 77 Not available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Not available.
CF77 Not available.
CF90 Available.
DEC F77 Not available.
DEC F90 Available.
PGF77 May be used to allocate storage for allocatable common blocks with common names specified as /nam/.
Sun F77 Not available.
Sun F90 Not available.
ALLOCATABLE declare allocatable arrays
syntax ALLOCATABLE [::] varlist
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
ASSEMBLE begin block of assembly code
syntax ASSEMBLE
CIVIC Available. Elsewhere must call assembly language external.
ASSIGN assign a label to a variable
syntax ASSIGN label TO integer
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Integer variable must be integer*4 or integer*8--not integer*2.
CIVIC Optional comma may follow label and non-numeric labels allowed.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Integer variable must be integer*4 or integer*8--not integer*2.
Sun F90 Available.
assignment statement assign a value to a variable
syntax variable = expression
Fortran 77 Available.
Fortran 90 Pointer assignment also available: pointer => target
IBM XLF Available.
CIVIC Assignment of character constant to integer is allowed.
CF77 Left hand side can be an array or array section.
CF90 Pointer assignment also available: pointer => target
DEC F77 Available.
DEC F90 Available.
PGF77 Assignment of character constant to integer or real is allowed.
Sun F77 Forms allowed include assigning: character constant to integer or real, logical to integer or real, and whole records to whole records.
Sun F77 Available.
assignment statement multiple assignment
  Only available in CIVIC. Elsewhere must convert
a=b=c=d to t=d; c=t; b=t; a=t
syntax variable = variable = ... = expression
CIVIC Available.
AUTOMATIC stack attribute
syntax AUTOMATIC [::] varlist
IBM XLF Available.
CIVIC Not available. Implied with link=2 option.
CF90 Available with version 3.0 and later.
DEC F77 Available. :: not allowed.
DEC F90 Available.
Sun F77 Available. :: not allowed.
Sun F90 Available.
BACKSPACE position a sequential/text file one record backward
syntax BACKSPACE unit
BACKSPACE ([UNIT=]unit [,IOSTAT=int] [,ERR=label])
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF77 In the first form, unit may be replaced with a file name.
CF90 In the first form, unit may be replaced with a file name.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
BACKSPACE FILE back I/O pointer up one file
syntax BACKSPACE FILE unit
CIVIC Not available in UNICOS
CF77 Not available. UNICOS does not support multi-file file structures. Program logic using this multi-file structure will have to be reworked where the file will have to be broken up external to the program and then accessed as individual units within the program.
BIT declare item of size one bit
syntax BIT variables
CIVIC Available. Elsewhere must use integers (or full word logicals) or write low level routines to manipulate the bits.
BLOCK DATA head of a unit where variables may be initialized
syntax BLOCK DATA [name]
BLOCKDATA [name]
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Can have more than one unnamed BLOCK DATA subprogram.
CF77 Can have more than one unnamed BLOCK DATA subprogram.
CF90 Can have more than one unnamed BLOCK DATA subprogram.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
BUFFER IN three argument
syntax BUFFER IN (id, mode[,ERR=label]) (begin,end,address)
CIVIC Use IZDKIN(unit,var,addr,len) from libcbase.a or
CALL GETWA(file,var,addr,count[,ierr]) or
BUFFER IN(unit,0)(start,end,addr)
File may be opened any way (formatted or unformatted, sequential or direct)
CF77 Not available. Use libmbase.a
CF90 Not available. Use libmbase.a
PGF77 Not available. Use libmbase.a
Sun F77 Not available. Use libmbase.a
Sun F90 Not available. Use libmbase.a
BUFFER IN two argument
syntax BUFFER IN (id, mode[,ERR=label]) (begin,end)
CIVIC On UNICOS, no ERR= option.
CF77 File may not be opened access='direct' or 'formatted'; must be 'unformatted' (and 'sequential').
CF90 Available. Array sections are not allowed.
PGF77 Not available. Use libmbase.a
Sun F77 Not available. Use libmbase.a
Sun F90 Not available. Use libmbase.a
BUFFER OUT three argument
syntax BUFFER OUT (id, mode[,ERR=label]) (begin,end,address)
CIVIC Use IZDKOUT(unit,var,addr,len) from libcbase.a or
CALL APUTWA(file,var,addr,count[,ierr]) or
BUFFER OUT(unit,0)(start,end,addr)
File may be opened any way (formatted or unformatted, sequential or direct)
CF77 Not available. Use libmbase.a
CF90 Not available. Use libmbase.a
PGF77 Not available. Use libmbase.a
Sun F77 Not available. Use libmbase.a
Sun F90 Not available. Use libmbase.a
BUFFER OUT two argument
syntax BUFFER OUT (id, mode[,ERR=label]) (begin,end)
CIVIC On UNICOS, no ERR= option.
CF77 File may not be opened access='direct' or 'formatted'; must be 'unformatted' (and 'sequential').
CF90 Available. Array sections are not allowed.
PGF77 Not available. Use libmbase.a
Sun F77 Not available. Use libmbase.a
Sun F90 Not available. Use libmbase.a
BYTE declare item of other than word size
syntax BYTE vars
IBM XLF Byte type is one byte long. Treated as integer*1, logical*1, or character*1 depending on context.
CIVIC Available. Bit count for size of item only available here.
DEC F77 Byte type is one byte long.
DEC F90 Byte type is one byte long.
PGF77 Byte type is one byte long. Equivalent to LOGICAL*1. May include dimension and/or initial value. Uses 2's complement arithmetic.
Sun F77 Byte type is one byte long. Equivalent to LOGICAL*1. May be used for variable index, but not for loop index. May include dimension and/or initial value (BYTE v/3/).
CALL call a subroutine
syntax CALL routine [([arglist])]
Fortran 77 Available.
Fortran 90 Keyword argument form is available.
IBM XLF Keyword argument form is available.
CIVIC The word "CALL" is optional only with CIVIC.
CF77 Available.
CF90 Keyword argument form is available.
DEC F77 Alternate return allowed with either *123 or &123
DEC F90 Keyword argument form is available. Alternate return allowed with either *123 or &123
PGF77 Alternate return allowed with either *123 or &123
Sun F77 recursive calls are allowed (but -stackvar should be used to put local variables on the stack).
CASE specify a case within a select case construct
syntax CASE (value_list) [name]
CASE DEFAULT [name]
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
CHAR declare item of byte size
  Only available in CIVIC. Elsewhere must use integers or write low level routines to manipulate the bits or use INTEGER*1.
syntax CHAR variables
CIVIC Available.
CHARACTER declare a variable of type character
syntax F77: CHARACTER [*len[,]] variable...
F90: CHARACTER [* len][[,attributes]::] variable[* len] [= value]
CHARACTER ([LEN=]length [,[KIND=]kind]) [,attributes::] variable [= value]
Fortran 77 Only FORTRAN77 form.
Fortran 90 Available.
IBM XLF Maximum size is 268,435,456 (256MB).
IBM XLHPF Maximum size may be specified with -qcharlen=num.
CIVIC Only FORTRAN77 form. Character*10 bxxx is ambiguous--use character*(10) bxxx.
CF77 Only FORTRAN77 form.
CF90 Available.
DEC F77 Only FORTRAN77 form. Maximum size is 2*31-1. Initialization is allowed, but with a different syntax than Fortran 90.
DEC F90 Maximum size is 2**31-1.
PGF77 Only FORTRAN77 form. When character is passed as argument, character length is added as value argument after formal arguments.
Sun F77 Only FORTRAN77 form. Characters freely mixable with other types; maximum size is 65535 characters.
Sun F90 Available.
CLOSE terminate an I/O connection
syntax CLOSE ([UNIT=]unit [,IOSTAT=int] [,ERR=label] [,STATUS=stat])
where stat is either 'KEEP' or 'DELETE'
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF77 Available.
CF90 Available.
DEC F77 Either DISPOSE or DISP may be substituted for STATUS, and 'SAVE' may be substituted for 'KEEP'. stat may also be 'PRINT', 'PRINT/DELETE', 'SUBMIT', or 'SUBMIT/DELETE'.
DEC F90 Either DISPOSE or DISP may be substituted for STATUS, and 'SAVE' may be substituted for 'KEEP'. stat may also be 'PRINT', 'PRINT/DELETE', 'SUBMIT', or 'SUBMIT/DELETE'.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
CODE ANALYSIS produce a source code cross reference listing
syntax CODE ANALYSIS
IBM XLF Use -qxref execute line option.
IBM XLHPF Use -qxref execute line option.
CIVIC Available. Alternate is CA option on execute line.
CF77 -Wf"-ex" or -Wf"-eL" execute line options.
DEC F77 -cross_reference or -show xref execute line options.
COMMON declare a common block
  Available on all platforms. A comma before the slash introducing a new block is optional.
syntax COMMON [/[blockname]/] varlist...
Fortran 77 Block name limited to 6 characters.
Fortran 90 Block name limited to 31 characters.
IBM XLF Block name may be up to 250 characters.
CIVIC Block name limited to 31 characters.
CF77 Block name limited to 31 characters. Maximum number of common blocks is 1021 or less.
CF90 Available.
DEC F77 Block name limited to 31 characters.
DEC F90 Block name limited to 31 characters.
PGF77 Block name limited to 31 characters. COMMON, ALLOCATABLE /name/ list is used to declare dynamic common. Can mix character and non-character.
Sun F77 Block name limited to 32 characters.
Sun F90 Block name limited to 32 characters.
COMPLEX declare variables of type complex
syntax F77: COMPLEX variable ...
F90: COMPLEX [([KIND=]kind)] [[,attributes]::] variable [=value] ...
Fortran 77 Only F77 form is available.
Fortran 90 Both forms available.
IBM XLF Both forms are available plus COMPLEX*8, COMPLEX*16, and COMPLEX*32 are equivalent to COMPLEX(4), COMPLEX(8), and COMPLEX(16) respectively.
CIVIC Only F77 form is available.
CF77 Only the F77 form is available plus COMPLEX may be followed with *4 *8 or *16 (all of which result in a total of 128-bit values).
CF90 COMPLEX may be followed by *8 *16 or *32 (the first two of which result in 128-bit values and the last resulting in 256-bit values).
DEC F77 Only F77 form is available plus COMPLEX may be followed with *8 or *16.
DEC F90 Both forms available, plus COMPLEX*8 and COMPLEX*16 are equivalent to COMPLEX(4) and COMPLEX(8) respectively.
PGF77 Only F77 form is available plus COMPLEX may be followed with *n where n is the bytesize. Default is real*4 for each half, complex*8 and *16 allowed.
Sun F77 Only F77 form is available plus COMPLEX may be followed with *n where n is the total bytesize. Default is real*4 for each half, real*8 if -r8 specified. *8 *16 *32 allowed (size is sum of space for both parts, so *8 is default)
Sun F90 Both forms available. COMPLEX may be followed with *n where n is the bytesize. *8 and *16 are allowed for 4 bytes in each part or 8 bytes in each part.
CONTAINS seperate internal subprograms or module subprograms
syntax CONTAINS
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
CONTINUE continue with execution
  Available on all platforms.
syntax CONTINUE
CYCLE go to next iteration of loop
syntax CYCLE [name]
Fortran 90 Available.
IBM XLF Available.
CIVIC Available
CF90 Available
DEC F77 Available.
DEC F90 Available.
Sun F90 Available.
DATA give variables initial values
syntax DATA objects /values/ ...
Fortran 77 A named common block may only be data loaded from a single BLOCK DATA subprogram.
Fortran 90 A named common block may only be data loaded from a single BLOCK DATA subprogram.
IBM XLF A named common block may only be data loaded from a single BLOCK DATA subprogram.
CIVIC Different parts of a common block may be data loaded from different subprograms.
The form DATA (var=list) is available only in CIVIC.
CF77 Different parts of a common block may be data loaded from different subprograms. Not all of an array need be filled. Character constants can fill integer or real variables. A character or Hollerith constant can be split between elements of an integer array.
CF90 Different parts of a common block may be data loaded from different subprograms. Not all of an array need be filled. Character constants can fill integer or real variables. A character or Hollerith constant can be split between elements of an integer array.
DEC F77 Available.
DEC F90 Available.
PGF77 Items in the same named common block may not be data loaded from different subprograms. May be intermixed with other declaratives.
Sun F77 Parts of a given named common block may be data loaded from different subprograms iff all of the subprograms are in the same source file.
DEALLOCATE release allocated space
  Release allocated space for pointered variables or allocatable arrays.
syntax DEALLOCATE (objects [,STAT=int])
Fortran 77 Not available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Not available.
CF77 Not available.
CF90 Available.
DEC F77 Not available.
DEC F90 Available.
PGF77 Available, plus can also deallocate dynamic common blocks.
Sun F77 Not available.
Sun F90 Available.
DECODE/ENCODE provide type conversions via I/O interface
  Available some places for backward compatability. The preferred method is formatted sequential write and read of internal files.
Fortran 77 Not available.
Fortran 90 Not available.
IBM XLF Not available.
CIVIC Not available.
CF77 Available.
CF90 Available. Formatted I/O only.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
DEFINE FILE establish characteristics of relative file
DEC F77 Comparable to OPEN statement.
DEC F90 Comparable to OPEN statement.
DELETE delete records from relative files
DEC F77 Available.
DEC F90 Available.
DERIVED TYPE start a derived type definition
syntax TYPE [[,spec] ::] name
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
DIMENSION establish the shape of arrays
syntax F77: DIMENSION array (bounds) ...
F90: DIMENSION [::] array (bounds) ...
Fortran 77 Only F77 form available.
Fortran 90 Both forms available.
IBM XLF Both forms available. May specify up to 20 dimensions.
CIVIC Only F77 form available.
CF77 Only F77 form available.
CF90 Both forms available.
DEC F77 Only F77 form available.
DEC F90 Both forms available.
PGF77 Only F77 form available.
Sun F77 Only F77 form available.
Sun F90 Both forms available.
DO indexed DO loop
syntax F77: DO label [,] var= e1 , e2 [, e3]
F90: [name:] DO [label] [,] var= e1 , e2 [, e3]
Fortran 77 Only F77 form available.
Fortran 90 Both forms available.
HPF Both forms available.
IBM XLF Both forms available.
CIVIC Both standard forms are available or
DO (var=e1,e2[,e3]) [name] or
DO (expr TIMES) [name]
Loop tripcount not fixed at start of loop iff mode=v.
CF77 Both forms available except for construct name.
CF90 Both forms available.
DEC F77 Both forms available except for construct name.
DEC F90 Both forms available.
PGF77 Only F77 form available.
Sun F77 Both forms available except for construct name and optional comma.
Sun F77 Both forms available.
DO infinite DO loop
syntax [name:] DO [label]
Fortran 90 Available.
HPF Available.
IBM XLF Available.
CIVIC Available, or alternate syntax: DO [name]
CF90 Available.
DEC F90 Available.
Sun F77 Not available (apparently).
Sun F90 Available.
DO WHILE loop on logical condition
syntax [name:] DO [label] [,] WHILE (logical)
Fortran 90 Available.
HPF Available.
IBM XLF Available.
CIVIC Available.
CF77 Available except for construct name.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available except for construct name.
Sun F77 Available except for construct name.
Sun F90 Available.
DOUBLE PRECISION declare variables as double precision real
syntax F77: DOUBLE PRECISION variable ...
F90: DOUBLE PRECISION [[,attributes]::] variable [=value] ...
(the blank between keywords being optional).
Fortran 77 Only F77 form available.
Fortran 90 Both forms available.
IBM XLF Both forms available.
CIVIC Only F77 form available. The word PRECISION is optional.
CF77 Only F77 form available plus DOUBLE PRECISION may be followed by *16 (which still results in 128-bit values).
CF90 DOUBLE PRECISION may be followed by *16.
DEC F77 Only F77 form available.
DEC F90 Both forms available.
PGF77 Only F77 form available. Optional value initialization allowed.
Sun F77 Only F77 form available. Default is real*8; real*16 if -r8 specified; real*4 if -r4 specified. Optional value initialization allowed with alternate syntax.
Sun F90 Both forms available. Default is real*8; real*16 if -r8 specified; real*4 if -r4 specified. Optional value initialization allowed.
DOUBLE COMPLEX declare variable as double precision complex
syntax DOUBLE COMPLEX varlist
IBM XLF Available.
CF77 Available but interpreted as just COMPLEX.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Not available.
ELSE start the default alternate section of a block IF
syntax ELSE [name]
Fortran 77 Optional construct name not available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF77 Optional construct name not available.
CF90 Optional construct name not available.
DEC F77 Optional construct name not available.
DEC F90 Available.
PGF77 Optional construct name not available.
Sun F77 Optional construct name not available.
Sun F90 Available.
ELSEIF start a conditional alternate section of a block IF
syntax ELSE IF (logical) THEN [name]
ELSEIF (logical) THEN [name]
Fortran 77 Optional construct name not available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Expression of type integer, real, or double only supported here. To make standard, change
ELSEIF (expr) THEN
to
ELSEIF ((expr).ne.0) THEN
whenever expr is not logical.
CF77 Optional construct name not available.
CF90 Available.
DEC F77 Optional construct name not available.
DEC F90 Available.
PGF77 Optional construct name not available.
Sun F77 Optional construct name not available.
Sun F90 Available.
ELSEWHERE start the elsewhere part of a where construct
syntax ELSEWHERE
Fortran 90 Available.
IBM XLF Available.
CF77 Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
ENCODE provide type conversions via I/O interface
CF77 Available. See DECODE.
CF90 Available. See DECODE.
DEC F77 Available. See DECODE.
DEC F90 Available. See DECODE.
PGF77 Available. See DECODE.
Sun F77 Available. See DECODE.
Sun F90 Available. See DECODE.
END end of subprogram
syntax F77: END
F90: END [PROGRAM [name]]
END [FUNCTION [name]]
END [MODULE [name]]
END [BLOCK DATA [name]]
(blanks being optional in F90 keywords).
Fortran 77 Only F77 form available.
Fortran 90 All forms available.
IBM XLF All forms available.
CIVIC Only F77 form available.
CF77 Only F77 form available.
CF90 All forms available.
DEC F77 Only F77 form available.
DEC F90 All forms available.
PGF77 Only F77 form available.
Sun F77 Only F77 form available. The statement may be continued.
Sun F77 All forms available.
ENDASSEMBLE end block of assembly code
syntax ENDASSEMBLE
CIVIC Available. Elsewhere must call assembly language external.
ENDDO end of block DO
syntax END DO [name]
ENDDO [name]
Fortran 77 Not available. Use labeled DO and continue.
Fortran 90 Available. ENDDO must be used if the DO statement does not use a label. Otherwise, either an ENDDO or a CONTINUE may be used.
HPF Available.
IBM XLF Available.
CIVIC Available.
CF77 Available except for construct name.
CF90 Available.
DEC F77 Available except for construct name.
DEC F90 Available.
PGF77 Available except for construct name.
Sun F77 Available.
Sun F90 Available.
ENDFILE write an EOF mark
syntax END FILE unit
ENDFILE unit
END FILE ([UNIT=]unit[,IOSTAT=int] [,ERR=label])
ENDFILE ([UNIT=]unit[,IOSTAT=int] [,ERR=label])
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available
CF77 In the first form, unit may be replaced with a file name.
CF90 In the first form, unit may be replaced with a file name.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
END FORALL end a FORALL construct
HPF Available.
IBM XLF Available.
DEC F90 Available.
ENDIF end of a block IF
syntax END IF [name]
ENDIF [name]
Fortran 77 Construct name not allowed.
Fortran 90 Available.
IBM XLF Available.
CIVIC Construct name not allowed.
CF77 Construct name not allowed.
CF90 Available.
DEC F77 Construct name not allowed.
DEC F90 Available.
PGF77 Construct name not allowed.
Sun F77 Construct name not allowed.
Sun F90 Available.
END INTERFACE terminate a procedure interface block
syntax END INTERFACE
ENDINTERFACE
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available. A generic identifier can be specified.
Sun F90 Available.
ENDMAP end of a MAP section
DEC F77 Available. See map.
DEC F90 Available. See map.
PGF77 Available. See map.
Sun F77 Available. See map.
ENDSELECT end of a SELECT CASE block
syntax END SELECT [name]
ENDSELECT [name]
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
ENDSTRUCTURE end of a STRUCTURE section
syntax ENDSTRUCTURE
DEC F77 Available. See STRUCTURE.
DEC F90 Available. See STRUCTURE.
PGF77 Available. See STRUCTURE.
Sun F77 Available. See STRUCTURE.
ENDTYPE end a derived-type definition
syntax END TYPE [name]
ENDTYPE [name]
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
ENDUNION end of a UNION section
DEC F77 Available. See UNION.
DEC F90 Available. See UNION.
PGF77 Available. See UNION.
Sun F77 Available. See UNION.
ENDWHERE end a where construct
syntax END WHERE
ENDWHERE
Fortran 90 Available.
IBM XLF Available.
CF77 Available.
CF90 Available.
DEC F90 Available.
SuC F90 Available.
ENTRY provide an alternate starting point for a routine
syntax F77: ENTRY name[([args])]
F90: ENTRY name[([args])] [RESULT(result)]
Fortran 77 Only F77 form available.
Fortran 90 F90 form available.
IBM XLF F90 form available.
CIVIC Only F77 form available.
CF77 Only F77 form available.
CF90 F90 form available.
DEC F77 Only F77 form available. & may be used as alternate way to specify alternate return in subroutine. Data type of entry name must be character and of same length if function name is character; or double complex if function name is double complex.
DEC F90 F90 form available. & may be used as alternate way to specify alternate return in subroutine. Data type of entry name must be character and of same length if function name is character; or double complex if function name is double complex.
PGF77 Only F77 form available.
Sun F77 Only F77 form available. & may be used as alternate way to specify alternate return in subroutine.
Sun F90 All forms available.
EQUIVALENCE Overlay the storage for variables
syntax EQUIVALENCE(var1, var2 [,var3...])
Fortran 77 Can't equivalence character and non-character items.
Fortran 90 Can't equivalence character and non-character items.
IBM XLF Can equivalence character and non-character items.
CIVIC Can equivalence character and non-character items.
CF77 Can't equivalence anything to a pointee.
For pointer(pa,a);equivalence(a,b)
use pointer(pa,a);pointer(pa,b)
Can equivalence character and non-character items.
CF90 Can't equivalence anything to a pointee.
For pointer(pa,a);equivalence(a,b)
use pointer(pa,a);pointer(pa,b)
Can equivalence character and non-character items.
DEC F77 Can't equivalence character and non-character items.
DEC F90 Can't equivalence character and non-character items.
PGF77 Can equivalence character and non-character items. Can use single subscript on arrays.
Sun F77 Can equivalence character and non-character items.
Sun F90 Can equivalence character and non-character items.
EXIT leave loop
syntax EXIT [name]
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
Sun F90 Available.
EXTERNAL declare a routine to be external to the current routine
syntax EXTERNAL [::] [names]
Fortran 77 Available. :: not allowed.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available. :: not allowed.
CF77 Available. :: not allowed.
CF90 Available.
DEC F77 Available. :: not allowed.
DEC F90 Available.
PGF77 Available. :: not allowed.
Sun F77 Available. :: not allowed.
Sun F90 Available.
FIND position a file at a particular record
DEC F77 Available for backward compatibility.
DEC F90 Available for backward compatibility.
FORALL perform selective assignment(s) to arrays with order control
HPF Available.
IBM XLF Available.
DEC F90 Available.
FORMAT specify the format for I/O
syntax FORMAT(format_items)
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Variable expressions of the form <expr> are allowed.
CIVIC Available.
CF77 Available.
CF90 Available.
DEC F77 Variable expressions of the form <expr> are allowed.
DEC F90 Variable expressions of the form <expr> are allowed.
PGF77 Variable expressions of the form <expr> are allowed.
Sun F77 Variable expressions of the form <expr> are allowed. Most comma seperators can be omitted.
Sun F90 Available.
FUNCTION start of a function definition
syntax F77: [type] FUNCTION name([args])
F90: [RECURSIVE][type] FUNCTION name([args]) [RESULT(result_name)]
Fortran 77 Only F77 form allowed.
Fortran 90 F90 form allowed.
IBM XLF F90 form allowed. -qrecur option makes all recursive. Additional keyword which can be placed before the word FUNCTION: PURE.
IBM XLHPF F90 form allowed. -qrecur option makes all recursive.
CIVIC F90 form allowed except RESULT clause not allowed.
CF77 F90 form allowed except RESULT clause not allowed.
CF90 F90 form allowed. Additional keywords which can be placed before the word FUNCTION: PURE and ELEMENTAL.
DEC F77 Only F77 form allowed. INTEGER FUNCTION f*2() is treated as INTEGER*2 FUNCTION f()
DEC F90 F90 form allowed. Additional keywords which can be placed before the word FUNCTION: PURE, EXTRINSIC(HPF), EXTRINSIC(HPF_LOCAL), EXTRINSIC(HPF_SERIAL), and ELEMENTAL. INTEGER FUNCTION f*2() is treated as INTEGER*2 FUNCTION f()
PGF77 Only F77 form allowed.
Sun F77 Only F77 form allowed. All routines are recursive anyway once local variables are put on the stack (e.g. with -stackvar).

INTEGER FUNCTION f*2() is treated as INTEGER*2 FUNCTION f()

Sun F90 All standard forms available.
GENERIC pass arguments by value in registers
syntax GENERIC vars
CIVIC Available. Must use normal linkage elsewhere.
GO TO simple unconditional go to
syntax GO TO label
GOTO label
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Label can be alphanumeric.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
GO TO assigned go to
syntax GO TO int [[,](labels)]
GOTO int [[,](labels)]
Fortran 77 Optional list is checked if present to make sure it contains the needed label.
Fortran 90 Optional list is checked if present to make sure it contains the needed label.
IBM XLF Optional list is checked if present.
CIVIC Optional list is not checked.
CF77 Optional list is not checked.
CF90 Optional list is not checked.
DEC F77 Optional list is checked if present to make sure it contains the needed label.
DEC F90 Optional list is checked if present to make sure it contains the needed label.
PGF77 Optional list is not checked.
Sun F77 Optional list is not checked.
Sun F90 Optional list is not checked.
GO TO computed go to
syntax GO TO (labels)[,] int
GOTO (labels)[,] int
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Label list may contain null items to indicate drop through. To convert to any other, replace null labels with label of statement after the go to statement.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
GO TO variable GO TO
syntax GO TO variable
CIVIC Available only with CIVIC. Difficult to replace.
GO TO indirect GO TO
syntax GO TO address_variable
CIVIC Only place where this form is allowed. To convert to any other, replace indirect GO TO with an assigned GO TO (one form of which looks exactly like the indirect GO TO statment) and replace statements that assign values to the ADDRESS variable used in the GO TO with ASSIGN statements.
IF arithmetic IF
syntax IF (expr) labelm, labelz, labelp
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Drop-throughs only supported by CIVIC. To make standard, supply any missing labels.
CF77 Available.
CF90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
IF logical IF
syntax IF (expr) statement
Fortran 77 Expression must be logical.
Fortran 90 Expression must be logical.
IBM XLF Expression must be logical.
CIVIC Expression may be logical, integer, real, or double. To convert to standard, change
IF (expr)...
to
IF ((expr).ne.0)...
CF77 Expression must be logical.
CF90 Expression must be logical.
DEC F77 Expression must be logical or integer.
DEC F90 Expression must be logical or integer.
PGF77 Expression must be logical.
Sun F77 Expression must be logical.
Sun F90 Expression must be logical.
IF two branch IF
syntax IF (expr) labeln, labelz
IBM XLF Not available
CIVIC Available. CIVIC two branch IF may be converted to standard by changing:
IF (expr) truebr, falsebr
to either
IF (expr) truebr, falsebr, truebr
or
IF (expr.ne.0) THEN
GO TO truebr
ELSE
GO TO falsebr
ENDIF
CF77 Supported as outmoded feature.
CF90 Supported as outmoded feature.
PGF77 Not available
Sun F77 Not available
IF THEN block IF
syntax F77: IF (expr) THEN
F90: [name:] IF (expr) THEN
Fortran 77 Only F77 form available.
Fortran 90 Both forms available.
IBM XLF Both forms available.
CIVIC Expression of type integer, real, or double supported here. To make standard, change
IF (expr) THEN
to
IF ((expr).ne.0) THEN
whenever expr is not logical.
CF77 Only F77 form available.
CF90 Both forms available.
DEC F77 Only F77 form available. Expression may be logical or integer.
DEC F90 Both forms available. Expression may be logical or integer.
PGF77 Only F77 form available.
Sun F77 Only F77 form available.
Sun F90 Both forms available.
IMPLICIT establish emplicit data typing rules
syntax IMPLICIT type(letter_list) ...
Fortran 77 Available.
Fortran 90 Available.
IBM XLF In addition to specifying a data type, IMPLICIT may also be used to specify STATIC, AUTOMATIC, or UNDEFINED.
CIVIC Available.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
IMPLICIT NONE disable implicit typing rules
  In general, if IMPLICIT NONE is available and specified it must be the first specification statement and it does not imply the need for any EXTERNAL statements.
syntax IMPLICIT NONE
Fortran 77 Not available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available. May appear anywhere within the subprogram.
CF77 Available. For non-intrinsic external functions, implies the need for EXTERNAL statements in versions before 4.0 only.
CF90 Available.
DEC F77 Available. The -u command line flag may be used as an alternate way to specify this feature.
DEC F90 Available. The -u command line flag may be used as an alternate way to specify this feature.
PGF77 Available.
Sun F77 Use IMPLICIT UNDEFINED(a-z) or IMPLICIT NONE
1. Must be the first specification statement.
2. Does not imply the need for any EXTERNAL statements.
3. the -u command line flag may be used as an alternate way to specify this feature.
Sun F90 Available.
INCLUDE include a seperate file into the source text
syntax INCLUDE "file"
Fortran 90 Available.
IBM XLF Available. In addition, either INCLUDE 'file' [n] or INCLUDE (file) [n] where n is the value that determines if in include is performed with the -qci (conditional include) facility. Directive must start after column 6 if fixed-form is in effect.
IBM XLHPF Available. In addition, either INCLUDE 'file' [n] or INCLUDE (file) [n] where n is the value that determines if in include is performed with the -qci (conditional include) facility. Directive must start after column 6 if fixed-form is in effect.
CIVIC Available. Can be nested 100 deep. Pathnames are relative to current working directory.
CF77 Available. Can be nested 20 deep. Pathnames are relative to current working directory in 4.n release; relative to directory of source file with include from 5.0 on.
CF90 Available. No nesting limit.
DEC F77 Available. "File" name may be replaced with "file /[NO]LIST".
DEC F90 Available. "File" name may be replaced with "file /[NO]LIST".
PGF77 Available. "File" name may be replaced with "file /[NO]LIST". Can be nested 20 deep.
Sun F77 Available. Can be nested 10 deep. For relative filename, looks in directory of source containing include first, then directory from which f77 was issued, then /usr/include, etc.
Sun F77 Available.
INPUT DATA alternate namelist read
CIVIC Available. In UNICOS, for input data group,unit[,ous] use read (unit,group). Input echoing (ous) is not available in the same way in UNICOS. To do this on UNICOS an 'E' must be in column one of the input file and a call to RNLECHO must be issued to specify the output file.
INQUIRE obtain information about files and units
syntax INQUIRE (spec_list)
INQUIRE (IOLENGTH=int) vars
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC In UNICOS, file path name limited to 31 characters.
CF77 READ=, WRITE=, READWRITE, DELIM, and PAD specifiers are available.
CF90 Available.
DEC F77 The following additional specifiers are available: ACCESS='UNKNOWN', CARRIAGECONTROL=..., CONVERT=..., DEFAULTFILE=..., FORM='UNKNOWN', ORGANIZATION=....
DEC F90 The following additional specifiers are available: CARRIAGECONTROL=..., CONVERT=..., DEFAULTFILE=..., FORM='UNKNOWN', FORM='BINARY', RECORDTYPE=..., ORGANIZATION=....
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
INTEGER declare variables to be of type integer
syntax F77: INTEGER variable ...
F90: INTEGER [([KIND=]kind)] [[,attributes]::] variable [=value] ...
Fortran 77 Only F77 form available.
Fortran 90 Both forms available.
IBM XLF Both forms available. -qintsize=bytes may be used to specify default size. If the default size is 4 bytes, then INTEGER, INTEGER*4, INTEGER(4), and INTEGER(KIND=4) all mean the same thing. *1 *2 *4 and *8 allowed.
IBM XLHPF Both forms available. -qintsize=bytes may be used to specify default size. If the default size is 4 bytes, then INTEGER, INTEGER*4, INTEGER(4), and INTEGER(KIND=4) all mean the same thing. *1 *2 *4 and *8 allowed.
CIVIC Only F77 form available.
CF77 Only F77 form available plus INTEGER may be followed with *1 *2 *4 or *8 (but all result in 64-bit integers).
CF90 Both forms available. INTEGER may be followd by *1 *2 *4 or *8 (which yield 32, 32, 32, and 64-bit values respectively).
DEC F77 Only F77 form available plus INTEGER may be followed with *n where n is the bytesize. Default size is 4 bytes; if -i2 is specified then default is 2 bytes; if -i8 is specified then default is 8 bytes.
DEC F90 Both forms available. INTEGER may be followed with *n where n is the bytesize. Default size is 4 bytes; if -i2 is specified then default is 2 bytes; if -i8 is specified then default is 8 bytes. Kinds *1 *2 *4 and *8 allowed.
PGF77 Only F77 form available plus INTEGER may be followed with *n where n is the bytesize. Default size is 4 bytes; *1 *2 *4 and *8 allowed.
Sun F77 Only F77 form available plus INTEGER may be followed with *n where n is the bytesize. Default size is 4 bytes, 2 bytes if -i2 specified, 8 bytes if -r8 specified; *2 or *4 are allowed; if -r8 is specified, 8 bytes are allocated but arithmetic is still on just upper 4 bytes. If -dbl is specified then *8 causes 8 bytes to be allocated and used.
Sun F90 Both forms available. INTEGER may be followed with *n where n is the bytesize. *1, *2, and *4 are allowed but are all currently treated as *4.
INTENT specify the intended use of dummy arguments
syntax INTENT (spec) [::] arg_list
where spec is IN, OUT, IN OUT, or INOUT
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
INTERFACE start an interface block
syntax INTERFACE [spec]
where spec is a generic name, OPERATOR(defined_op), or ASSIGNMENT(=).
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available. Available.
INTRINSIC permit specific intrinsic functions as actual args
syntax INTRINSIC names
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available. Inline intrinsic functions cannot be passed as arguments.
Sun F77 Available. Inline intrinsic functions cannot be passed as arguments.
Sun F77 Available.
LOGICAL declare variables to be of type logical (true or false)
syntax F77: LOGICAL variable ...
F90: LOGICAL [([KIND=]kind)] [[,attributes]::] variable [=value] ...
Fortran 77 Only F77 form available.
Fortran 90 Both forms available.
IBM XLF Both forms available. INTEGER and LOGICAL values can be mixed if -qintlog is used. -qintsize=bytes can be used to specify default size. If the default size is 4 bytes, then LOGICAL, LOGICAL*4, LOGICAL(4), and LOGICAL(KIND=4) all mean the same thing. *1 *2 *4 and *8 allowed.
IBM XLHPF Both forms available. INTEGER and LOGICAL values can be mixed if -qintlog is used. -qintsize=bytes can be used to specify default size. If the default size is 4 bytes, then LOGICAL, LOGICAL*4, LOGICAL(4), and LOGICAL(KIND=4) all mean the same thing. *1 *2 *4 and *8 allowed.
CIVIC Only F77 form available. Logical variables may be used as integers.
CF77 Only F77 form available plus LOGICAL may be followed with *1 *2 *4 or *8 (which all result in 64-bit values).
CF90 Both forms available. LOGICAL may be followed by *1 *2 *4 or *8 (which all result in 64-bit values).
DEC F77 Only F77 form available plus LOGICAL may be followed by *1 *2 *4 or *8. Logical variables may be used as integers.
DEC F90 Both forms available. LOGICAL may be followed by *1 *2 *4 or *8. Logical variables may be used as integers.
PGF77 Only F77 form available plus LOGICAL may be followed with *n where n is the bytesize. Default is 4 bytes; *1 *2 *4 allowed; integers may be interchanged with integers.
Sun F77 Only F77 form available plus LOGICAL may be followed with *n where n is the bytesize. Default size is 4 bytes, 2 bytes if -i2 specified, 8 bytes if -r8 specified; *1, *2, and *4 are allowed.
Sun F90 Both forms available. LOGICAL may be followed with *n where n is the bytesize. *1, *2, and *4 are allowed.
MAP start of a MAP section
DEC F77 Used to define alternate groups of fields in a union.
DEC F90 Used to define alternate groups of fields in a union.
PGF77 Used to define alternate groups of fields in a union.
Sun F77 Used to define alternate groups of fields in a union.
Sun F90 Not available.
MODULE start a module program unit
syntax MODULE name
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
MODULE PROCEDURE list module procedures that have a generic interface
syntax MODULE PROCEDURE name...
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
NAMELIST group variables into a list for namelist I/O
syntax NAMELIST /group/ items
Fortran 90 Input may start in column 1;
On output, always blank in column 1.
Input is
&group_name name=value, name=value,value,value /
where value is constant or r*constant.
Commas between values in list; commas or blanks between assignment pairs.
Comments are not allowed in the input.
Fortran 95 The same as Fortran 90 except that on input trailing comments are allowed following an "!" which is the first non-blank in a record or which follows a value seperator.
IBM XLF Input must start after column 1.
Cannot do namelist reads from or writes to internal files.
Variables listed may not be array dummy arguments with non-constant bounds, character variables with non-constant lengths, automatic objects, pointers, derived type variables containing a pointer, allocatable arrays, or pointees.
If NAMELIST runtime option has value OLD then input starts with either $ or &, has comma seperated items, and ends with $END or &END.
Otherwise input starts with & and ends with /.
Comments are not allowed in the input.
CIVIC On UNICOS, no pointered, character, logical, bit, or byte variables;
Input must start after column 1;
Each section must start with &group_name or $group_name;
List must be comma seperated (not blank seperated);
Use DDIOPTON("labels") to accept namelist labels.
Comments are not allowed in the input.
CF77 Input must start in column 2. Input is
$group_name name=value, name=value,value,value $[END]
or
&group_name name=value, name=value,value,value &[END]
or
&group_name name=value, name=value,value,value /
List must be comma seperated (not blank seperated).
Comments are not allowed in the input.
CF90 Input must start in column 2. Input is
$group_name name=value, name=value,value,value $[END]
or
&group_name name=value, name=value,value,value &[END]
or
&group_name name=value, name=value,value,value /
List must be comma, blank, or slash seperated.
Comments are not allowed in the input.
DEC F77 Input must start in column 2. Input is
$group_name name=value, name=value,value,value $[END]
or
&group_name name=value, name=value,value,value /
&group_name name=value, name=value,value,value &[END]
List must be comma, blank, or slash seperated.
Fortran 95 style comments are allowed in the input.
DEC F90 Input must start in column 2. Input is
$group_name name=value, name=value,value,value $[END]
or
&group_name name=value, name=value,value,value &[END]
or
&group_name name=value, name=value,value,value /
List must be comma, blank, or slash seperated.
Fortran 95 style comments are allowed in the input.
PGF77 Input must start in column 2. Input is
$group_name name=value, name=value,value,value $[END]
or
&group_name name=value, name=value,value,value &[END]
List must be comma seperated.
Comments are not allowed in the input.
Sun F77 List may not contain array elements, records, record fields, character substrings, dummy arrays with non-constant dimensions.
Input must start after column 1;
Each section must start with
&group_name or $group_name;
List must be comma seperated (not blank seperated).
Comments are not allowed in the input.
Sun F77 Same as Fortran 90.
NULLIFY cause pointers to become disassociated
syntax NULLIFY (pointee_list)
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
OPEN open a file for i/o
syntax OPEN (spec_list)
Fortran 77 Available.
Fortran 90 Available.
CIVIC Available.
CF77 STATUS='SCRATCH', POSITION=, ACTION=, DELIM=, and PAD= options are also allowed.
CF90 Available.
DEC F77 ACCESS='APPEND', ASSOCIATEVARIABLE=, BLOCKSIZE=, BUFFERCOUNT=, CARRIAGECONTROL=, CONVERT=, DEFAULTFILE=, DISPOSE=, DISP=, NAME=, ORGANIZATION=, READONLY, RECORDSIZE=, RECORDTYPE=, TYPE=, and USEROPEN= options are also allowed.
DEC F90 ACCESS='APPEND', ASSOCIATEVARIABLE=, BLOCKSIZE=, BUFFERCOUNT=, CARRIAGECONTROL=, CONVERT=, DEFAULTFILE=, DISPOSE=, FORM='BINARY', MAXREC=, NAME=, ORGANIZATION=, READONLY, RECORDSIZE=, RECORDTYPE=, SHARED, TYPE=, and USEROPEN= options are also allowed.
PGF77 ACCESS='APPEND', ASSOCIATEVARIABLE, DISPOSE={'KEEP'|'SAVE'}, NAME, READONLY, and TYPE are also available.
Sun F77 FILEOPT=, READONLY, and ACTION= options are also allowed.
Sun F90 FILEOPT=, READONLY, and ACTION= options are also allowed.
OPTIMIZE specify optimization level
IBM XLF Not available. Use -O3 option for high level of optimization.
CIVIC Available.
CF77 -O optim where optim is:
full for all optimization (default);
novector for all but vectorization;
off no optimization except scheduling and register assignment
nozeroinc for cii increments assumed; non zero (the default)
zeroinc for cii increments checked.
CF90 Not available. Use -O option.
DEC F77 Not available. Use -O5 option for high level of optimization.
DEC F90 Not available. Use -O5 option for high level of optimization.
PGF77 Not available. Use -O4 option for high level of optimization.
Sun F77 Not available. Use -O5 option for high level of optimization.
Sun F90 Not available. Use -O5 option for high level of optimization.
OPTION command line override statement
CIVIC See the various OPTION directives.
DEC F77 OPTIONS statement can be used.
DEC F90 OPTIONS statement can be used.
PGF77 OPTIONS /option[/option...] must be first in program unit; options available: CHECK=ALL, CHECK=NONE, NOCHECK, [NO]EXTEND_SOURCE, [NO]F77, [NO]I4, [NO]RECURSIVE, [NO]REENTRANT, [NO]STANDARD.
Sun F77 OPTIONS statement allows override of certain command line options. Must be first statement in program.
OPTIONAL specify that a dummy argument need not be associated with an actual argument
syntax OPTIONAL [::] args
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
PARAMETER establish the value for a named constant
syntax PARAMETER (name = value ...)
Fortran 77 Available.
Fortran 90 Initialization expression may contain intrinsic functions of type integer or character if each argument is integer or character.
IBM XLF Same as Fortran 90.
CIVIC Value not coerced to type of parameter if mode=d or parameters processed by PRECOMP. Alternate form of statement (with increment) is available only in LRLTRAN.
CF77 Available.
CF90 Available.
DEC F77 Alternate syntax without the parentheses is available. With the alternate syntax, the form of the constant value determines the type of the name.
DEC F90 Alternate syntax without the parentheses is available. With the alternate syntax, the form of the constant value determines the type of the name. To not recognize the alternate syntax use the -noaltparam option.
PGF77 Alternate form without parentheses allowed, in which case the form of the constant value determines the type of the name.
Sun F77 Alternate form without parentheses allowed if -xl is used, in which case the form of the constant value determines the type of the name.
Sun F90 Fortran 90 form available.
PAUSE temporarily halt program execution
syntax PAUSE [message]
Fortran 77 Available.
Fortran 90 Available.
IBM XLF String of up to 5 digits or character constant allowed.
CIVIC On UNICOS, no integer expression or integer variable (character expression or integer literal only).
CF77 message can be character expression.
CF90 message can be character expression.
DEC F77 String of up to 6 digits or character constant allowed.
DEC F90 String of up to 6 digits or character constant allowed.
PGF77 Available.
Sun F77 String of up to 5 digits or character constant allowed.
Sun F90 String of up to 5 digits or character constant allowed.
POINTER declare a variable to be pointed to by the specified pointer
syntax POINTER (pointer, pointee)
IBM XLF Available. Called "integer pointers" by IBM. Use the -qddim or -qnoddim to allow or disallow dynamic dimensioning of pointered arrays.
IBM XLHPF Available. Called "integer pointers" by IBM. Use the -qddim or -qnoddim to allow or disallow dynamic dimensioning of pointered arrays. -qddim should not be used for HPF procedures.
CIVIC Available.
CF77 After 5.0, can have character pointer "character*(*) a; pointer(pa,a)" Pointer to character is character descriptor. Increment of character pointer is byte increment. Set character pointer by pa=FCD(word_address, length)+offset
CF90 Pointer to character is character descriptor. Increment of character pointer is byte increment. Set character pointer by pa=FCD(word_address,length)+offset. Cannot point to or be part of derived data types.
DEC F77 Available. Pointer variable is type integer*8, but should not be declared in an integer statement. Cannot have pointer to pointer. Uses byte address. Attributes of a pointee may only be given in a seperate declaration.
DEC F90 Available. Pointer variable is type integer*8, but should not be declared in an integer statement. Cannot have pointer to pointer. Uses byte address. Attributes of a pointee may only be given in a seperate declaration.
PGF77 Available. Dynamic dimensions are frozen at routine entry. Pointer variable is type integer, but should not be declared in an integer statement. Cannot have pointer to pointer. Uses byte address. Attributes of a pointee may only be given in a seperate declaration.
Sun F77 Available. Dynamic dimensions are frozen at routine entry. Pointer variable is type integer, but should not be declared in an integer statement. Cannot have pointer to pointer. Uses byte address. Attributes of a pointee may only be given in a seperate declaration.
Sun F90 Available. Dimensions on a pointered array must be explicit shape or assumed-size. Pointer variable is type Cray Pointer. Dynamic dimensions are frozen at routine entry. If the pointee is of character type it must be CHARACTER*(*) Cannot have pointer to pointer. A pointer cannot be data loaded. It is assumed that Cray pointees are not dynamically equivalenced to anything else. Assignment to a Cray character pointer changes the address, offset, and length; the FCD and CLOC intrinsic functions may be used. Cray Character pointees cannot be arrays.
POINTER give a variable the Fortran 90 pointer attribute
syntax POINTER [::] pointer[(dimensions)]
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
PRINT write character record to implicit unit specifier
syntax PRINT format [,vars]
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 An integer array can be used for the format.
Sun F90 Available.
PRINT write the values of all variables in the namelist
syntax PRINT namelist
IBM XLF Available.
CIVIC Available.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
PRIVATE specify a module entry is not accessible via use association
syntax PRIVATE [[::] list]
Fortran 77 Not avalable.
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
PROGRAM declare main routine name
syntax PROGRAM name
IBM XLF Available.
CIVIC Statement is ignored at LCC. At NERSC, information in parentheses is sent to LINK.
CF77 Any additional information in parentheses is ignored.
CF90 Any additional information in parentheses is ignored.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Name may not be the same as any external name or common block.
Sun F90 Name may not be the same as any external name or common block.
PUBLIC specify a module entry can be accessed via use association
syntax PUBLIC [[::] list]
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
PUNCH produce punched output
CF77 Not supported as of 5.0.
READ read
syntax READ ([UNIT=]unit [,spec_list]) [vars]
READ format [,vars]
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC In UNICOS, no logical array without implied DO; no bit vector variable; not bit or byte variables.
CF77 A file name may be used in place of a unit identifier.
CF90 A file name may be used in place of a unit identifier.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Variable format may be an integer array.
Sun F90 Available.
READ namelist read
syntax READ ([UNIT=]unit, [NML=]name [,spec_list])
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF77 READ name is also allowed.
CF90 READ name is also allowed.
DEC F77 READ name is also allowed.
DEC F90 READ name is also allowed.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
REAL declare variables to be of type real (or floating point)
syntax F77: REAL vars
F90: REAL [([KIND=]kind)] [[,attributes]::] variable [=value] ...
Fortran 77 Only F77 form available.
Fortran 90 Both forms are available.
IBM XLF Both forms are available. -qrealsize=bytes may be used to specify default size for REAL, DOUBLE PRECISION, COMPLEX, and DOUBLE COMPLEX values. If the default size is 4 bytes for reals, then REAL, REAL*4, REAL(4), and REAL(KIND=4) all mean the same thing. *4 *8 and *16 allowed.
IBM XLHPF Both forms are available. -qrealsize=bytes may be used to specify default size for REAL, DOUBLE PRECISION, COMPLEX, and DOUBLE COMPLEX values. If the default size is 4 bytes for reals, then REAL, REAL*4, REAL(4), and REAL(KIND=4) all mean the same thing. *4 *8 and *16 allowed.
CIVIC Only F77 form available.
CF77 Only F77 form available plus REAL may be followed with *4 *8 or *16 (the first two of which result in 64-bit reals and the last gives 128-bit reals).
CF90 Both forms are available plus REAL may be followed by *4 *8 or *16(the first two of which result in 64-bit reals and the last gives 128-bit reals).
DEC F77 Only F77 form available plus REAL may be followed with *n where n is the bytesize. Default is 4 bytes, 8 bytes if -r8 specified, 16 bytes if -r16 specified.
DEC F90 Both forms are available. Default is 4 bytes, 8 bytes if -r8 specified, 16 bytes if -r16 specified. REAL may be followed with *n where n is the bytesize. *4 *8 and *16 allowed.
PGF77 Only F77 form available plus REAL may be followed with *n where n is the bytesize. Default is 4 bytes; *4 *8 allowed.
Sun F77 Only F77 form available plus REAL may be followed with *n where n is the bytesize. Default is 4 bytes, 8 bytes if -r8 specified; *4 *8 *16 allowed; initial values can be specified with a different syntax (REAL X/3./).
Sun F90 Both forms are available. REAL may be followed with *n where n is the bytesize. *4 and *8 are allowed.
RECORD record declaration
  Used with declared structures. See STRUCTURE statement.
syntax RECORD /structure/ vars
Fortran 77 Not available.
Fortran 90 Not available.
IBM XLF Not available.
CIVIC Not available.
CF77 Not available.
CF90 Not available.
DEC F77 Available to declare variables to be instances of a structure.
DEC F90 Available to declare variables to be instances of a structure.
PGF77 Available to declare variables to be instances of a structure. Individual fields my be initialized in STRUCTURE.
Sun F77 Available to declare variables to be instances of a structure.
Sun F90 Not available.
recursive attribute specification that a routine needs to be able to call itself recursively
Fortran 90 Use recursive attribute on function or subroutine statement.
IBM XLF Use recursive attribute on function or subroutine statement.
CIVIC Use link=2 or recursive attribute on function or subroutine statement.
CF77 Use recursive attribute on function or subroutine statement or -Wf"-o recursive".
CF90 Use recursive attribute on function or subroutine statement.
DEC F77 Use -automatic option.
DEC F90 Use recursive attribute on function or subroutine statement or -automatic or -recursive options.
PGF77 Use -Mrecursive option.
Sun F77 All procedures may be called recursively (but variables should first be put on the stack via -stackvar or AUTOMATIC).
Sun F90 Use recursive attribute on function or subroutine statement.
REDIMENSION dynamically redefine the bounds of a deferred-shape array
syntax REDIMENSION name ([lb:]ub...)...
PGF77 Available.
REGFILE ask for variables to be allocated space in registers
CIVIC Available.
CF77 Available for Cray-2 only.
REPEAT end a block DO
CIVIC Available as alternate for ENDDO--replace with ENDDO for other compilers.
RETURN return control to the calling routine
syntax RETURN [alt_return_expr]
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available. Can be used in a main program with the same effect as execution of the END statement.
CIVIC Named return is only allowed with CIVIC. Elsewhere, must use recursive routines or avoid calling one entry in a routine from within another.
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
REWIND backup the position of the I/O medium
syntax REWIND unit
REWIND ([UNIT=]unit[,IOSTAT=int][,ERR=label])
Fortran 77 Unit cannot be connected for direct access.
Fortran 90 Unit can be connected for direct access or unconnected.
IBM XLF Unit can be connected for direct access or unconnected.
CIVIC Unit cannot be connected for direct access.
CF77 In the first form, unit may be replaced with a file name. Unit can be connected for direct access or unconnected.
CF90 In the first form, unit may be replaced with a file name. Unit can be connected for direct access or unconnected.
DEC F77 Unit cannot be connected for direct access.
DEC F90 Unit can be connected for direct access or unconnected.
PGF77 Available.
Sun F77 Unit should not be connected for direct access.
Sun F90 Unit can be connected for direct access or unconnected.
REWRITE write to a file the last record read
DEC F77 Available.
DEC F90 Available.
ROWWISE declare that arrays are to be stored in row major order
syntax ROWWISE vars
CIVIC Available. Must reverse subscripts elsewhere.
SAVE declare that variables are to be assigned static storage
syntax SAVE [[::] list]
where the list contains variable names and /common/ names
Fortran 77 The :: syntax is not available.
Fortran 90 Available.
IBM XLF Available.
CIVIC The :: syntax is not available.
CF77 The :: syntax is not available.
CF90 Available.
DEC F77 The :: syntax is not available.
DEC F90 Available.
PGF77 The :: syntax is not available.
Sun F77 The :: syntax is not available.
Sun F90 Available.
SELECT CASE start of a select case block used to pick one particular subblock to execute
syntax [name:] SELECT CASE (expr)
[name:] SELECTCASE (expr)
Fortran 90 Available.
IBM XLF Available.
CIVIC Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
SEQUENCE declare a derived type to be a sequence derived type
syntax SEQUENCE
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
statement function define a statement function
  Available on all platforms.
syntax name(args) = expression
STATIC declare that variables are to be given static allocations
  Alternate for SAVE statement where available.
syntax STATIC varlist
Fortran 77 Not available.
Fortran 90 Not available.
IBM XLF Available. Optional :: may follow STATIC.
CIVIC Not available.
CF77 Not available.
CF90 Not available.
DEC F77 Available.
DEC F90 Available. Optional :: may follow STATIC.
PGF77 Not available.
Sun F77 Available.
Sun F90 Not available.
 
STOP terminate execution
syntax STOP [code]
where code is a character constant or an integer literal of up to 5 digits.
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC On UNICOS, no integer variable or integer expression (character expression or integer literal only).
CF77 code can be character expression.
CF90 code can be character expression.
DEC F77 Integer literal can be up to 6 digits.
DEC F90 Integer literal can be up to 6 digits.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
STRUCTURE declare a record structure
  Example:
STRUCTURE /typename/
INTEGER field1
REAL field2(10)
...
ENDSTRUCTURE
RECORD /typename/ varname
... varname.field1 ...
Fortran 77 Not available.
Fortran 90 Can use derived types to get some of the structure functionality:
TYPE typename [;SEQUENCE]
INTEGER field1
REAL field2
...
END TYPE
TYPE (typename) varname
(not necessarily packed fields; must use fully qualified names)
IBM XLF Not available. Can use derived types to get some of the structure functionality.
CIVIC A STRUCTURE statement is available in CIVIC but it is only to define fields within a word, and qualified names are not used.
CF77 Not available.
CF90 Not available. Can use derived types to get some of the structure functionality.
DEC F77 Available.
DEC F90 Available. Fields may be initialized.
PGF77 Available. Fields may be initialized.
Sun F77 Available.
Sun F90 Not available.
SUBROUTINE declare a subroutine
syntax [RECURSIVE][type] SUBROUTINE name[([args])]
Fortran 77 RECURSIVE clause not allowed.
Fortran 90 Available.
IBM XLF Available. -qrecur option makes all recursive. Additional keyword which can be placed before the word SUBROUTINE: PURE.
IBM XLHPF Available. -qrecur option makes all recursive.
CIVIC Available.
CF77 Available.
CF90 Available. Additional keywords which can be placed before the word SUBROUTINE: PURE and ELEMENTAL.
DEC F77 RECURSIVE clause not allowed. & may be used as alternate way to specify alternate return in subroutine.
DEC F90 Available. Additional keywords which can be placed before the word SUBROUTINE: PURE, EXTRINSIC(HPF), EXTRINSIC(HPF_LOCAL), EXTRINSIC(HPF_SERIAL), and ELEMENTAL. & may be used as alternate way to specify alternate return in subroutine.
PGF77 RECURSIVE clause not allowed.
Sun F77 Available. RECURSIVE clause not allowed, but all routines are recursive anyway (but variables should be put on the stack via -stackvar or AUTOMATIC). & may be used as alternate way to specify alternate return in subroutine.
Sun F90 Available.
TARGET specify that variables may be Fortran 90 pointer targets
syntax TARGET [::] var [(dimensions)]
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
TASK COMMON declare common block local to each task
syntax TASK COMMON [/[blockname]/] varlist...
CIVIC Available.
CF77 CIVIC task common statement is accepted. Alternate with 5.0 is regular common statement and then "CDIR$ TASKCOMMON blocknamelist" or "CMIC$ TASKCOMMON blocknamelist".
CF90 Available.
TYPE output to terminal
  Alternate for PRINT statement where available.
syntax TYPE format [,vars]
Fortran 77 Not available.
Fortran 90 Not available.
IBM XLF Not available.
CIVIC Not available.
CF77 Not available.
CF90 Not available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F77 Not available as an I/O statement.
TYPE declare a derived type
syntax TYPE [[access]::] name
where access is PRIVATE or PUBLIC
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
TYPE declare a variable to be of a derived type
syntax TYPE(type) [[,attributes]::] variable [=value] ...
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
type declaration declare multiple attributes of objects
syntax data_type [[,attributes]::] variables [=values]
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
UNION union declaration header statement to define alternate fields within a structure declaration
  Example:
UNION
MAP
INTEGER var1
ENDMAP
MAP
REAL var2
ENDMAP
ENDUNION
Fortran 77 Not available.
Fortran 90 Not available.
IBM XLF Not available.
CIVIC Not available.
CF77 Not available.
CF90 Not available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available. Fields may be initialized in field declarations.
Sun F77 Available.
Sun F90 Not available.
UNLOCK unlock a lock from a previous read
DEC F77 Available.
DEC F90 Available.
USE provide local access to public entities of a module
syntax USE module [, renames]
USE module, ONLY:[onlys]
Fortran 90 Available.
IBM XLF Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
VALUE declare arguments passed by value
CIVIC Available. Must use normal linkage elsewhere.
DEC F77 Use %VAL(a) to pass a by value. %REF(a) also available.
DEC F90 Use %VAL(a) to pass a by value. %REF(a) also available.
PGF77 Use %VAL(a) to pass a by value. %REF(a) also available.
Sun F77 Use %VAL(a) to pass a by value. %REF(a) also available.
Sun F90 Not available.
VECTOR declare an LRLTRAN vector
syntax VECTOR decl_list
CIVIC Available.
VIRTUAL alternate form of DIMENSION statement
IBM XLF Available.
DEC F77 Available.
DEC F90 Available.
Sun F77 Available.
Sun F90 Not available.
VOLATILE declare that a variable may change at any time for unseen reasons
syntax VOLATILE vars
IBM XLF Available. Disables optimization for named variables or common blocks.
DEC F77 Available.
DEC F90 Available.
PGF77 Available. Disables optimization for named variables or common blocks.
Sun F77 Available. Disables optimization for named variables or common blocks.
Sun F90 Not available.
WAIT wait for asynchronous I/O to complete and/or check completion status
syntax WAIT (list)
IBM XLF Available.
WHERE mask evaluation of array expressions and array assignments
syntax WHERE (logical) array_assignment or
WHERE (logical)
followed by array assignments, a possible ELSEWHERE, and an ENDWHERE statement.
Fortran 90 Available.
IBM XLF Available.
CF77 Available.
CF90 Available.
DEC F90 Available.
Sun F90 Available.
WRITE write to a file
syntax WRITE ([UNIT=]unit [,spec_list]) [exprs]
Fortran 77 Available.
Fortran 90 Available.
IBM XLF Available.
CIVIC Available. In UNICOS, no logical arrays without implied DO loop; no bit vector; bit or byte array without implied DO loop; unit=100 not available--write to character buffer and then use tsformatio (write (100,fmt)...
becomes character*200 buf(n)
write (buf,fmt)
call tsformatio(buf,n)
where n is the number of lines in the format)
CF77 Available. A file name may be used in place of a unit identifier. Alternate form: WRITE format [,exprs]
CF90 Available. A file name may be used in place of a unit identifier. Alternate form: WRITE format [,exprs]
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.
WRITE namelist write
syntax WRITE ([UNIT=]unit, [NML=]name [,spec_list])
  Available.
IBM XLF Available.
CIVIC Available. For call write(unit,group) use write(unit,group)
CF77 Available.
CF90 Available.
DEC F77 Available.
DEC F90 Available.
PGF77 Available.
Sun F77 Available.
Sun F90 Available.