Contained Within
Find More Documentation
Featured Support Resources
| Download this book in PDF (662 KB)
Appendix B Sample Statements
This appendix shows a table that contains selected samples of the f77 statement types. The purpose is to provide a quick reference for syntax details of the more common variations of each statement type.
Nonstandard features are tagged with a small black diamond (@).
Table B-1 FORTRAN Statement Samples
|
Name
|
Examples
|
Comments
|
|
ACCEPT @
|
ACCEPT *, A, I
|
Compare to READ.
|
|
ASSIGN
|
ASSIGN 9 TO I
|
|
|
ASSIGNMENT
|
C = 'abc'
C
= "abc"
C = S // 'abc'
C
= S(I:M)
|
Character @
|
|
L = L1 .OR. L2
L
= I .LE. 80
|
Logical
|
|
N = N+1
X
= '7FF00000'x
|
Arithmetic
Hex @
|
|
CURR = NEXT
NEXT.ID
= 82
|
Compare to RECORD.
|
|
AUTOMATIC @
|
AUTOMATIC A, B,
C
AUTOMATIC REAL P, D, Q
IMPLICIT
AUTOMATIC REAL (X-Z)
|
|
|
BACKSPACE
|
BACKSPACE U
BACKSPACE(UNIT=U,IOSTAT=I,
ERR=9)
|
|
|
BLOCK DATA
|
BLOCK DATA
BLOCK
DATA COEFFS
|
|
|
BYTE @
|
BYTE A, B, C
BYTE
A, B, C(10)
BYTE A /'x'/, B /255/,
C(10)
|
Initialize A and B
|
|
CALL
|
CALL P( A, B )
CALL
P( A, B, *9 )
CALL P( A, B, &9
)
CALL P
|
Alternate return
Alternate return @
|
|
CHARACTER
|
CHARACTER C*80,
D*1(4)
CHARACTER*18 A, B, C
CHARACTER
A, B*3 /'xyz'/, C /'z'/
|
Initialize B and C@
|
|
CLOSE
|
CLOSE ( UNIT=I
)
CLOSE( UNIT=U, ERR=90, IOSTAT=I
)
|
|
|
COMMON
|
COMMON / DELTAS
/ H, P, T
COMMON X, Y, Z
COMMON
P, D, Q(10,100)
|
|
|
COMPLEX
|
COMPLEX U, V,
U(3,6)
COMPLEX U*16
COMPLEX
U*32 SPARC only
COMPLEX
U/(1.0,1.0)/,V/(1.0,10.0)/
|
Double complex @
Quad complex @
Initialize U and V @
|
|
CONTINUE
|
100 CONTINUE
|
|
|
DATA
|
DATA A, C / 4.01,
'z' /
DATA (V(I),I=1,3) /.7, .8,
.9/
DATA ARRAY(4,4) / 1.0 /
DATA
B,O,X,Y /B'0011111', O'37', X'1f', Z'1f'/
|
@
|
|
DECODE @
|
DECODE ( 4, 1,
S ) V
|
|
|
DIMENSION
|
DIMENSION ARRAY(4,
4)
DIMENSION V(1000), W(3)
|
|
|
DO
|
DO 100 I = INIT,
LAST, INCR
100
CONTINUE
|
|
|
DO I = INIT, LAST
END
DO
|
Unlabeled DO @
|
|
DO WHILE ( DIFF
.LE. DELTA )
END
DO
|
DO WHILE @
|
|
DO 100 WHILE (
DIFF .LE. DELTA )
100
CONTINUE
|
@
|
|
DOUBLE COMPLEX@
|
DOUBLE COMPLEX
U, V
DOUBLE COMPLEX U, V
COMPLEX
U/(1.0,1.0D0)/,
V/(1.0,1.0D0)/
|
COMPLEX*16 @
COMPLEX @
Initialize U and V @
|
|
DOUBLE PRECISION
|
DOUBLE PRECISION
A, D, Y(2)
DOUBLE PRECISION A,D/1.2D3/,Y(2)
|
REAL*8 @
Initialize D @
|
|
ELSE
|
ELSE
|
Compare to IF (Block)
|
|
ELSE IF
|
ELSE IF
|
|
|
ENCODE @
|
ENCODE( 4, 1,
T ) A, B, C
|
|
|
END
|
END
|
|
|
END DO @
|
END DO
|
Compare to DO
|
|
ENDFILE
|
ENDFILE ( UNIT=I
)
ENDFILE I
ENDFILE(
UNIT=U, IOSTAT=I, ERR=9 )
|
|
|
END IF
|
END IF
|
|
|
END MAP @
|
END MAP
|
Compare to MAP
|
|
END STRUCTURE
|
END STRUCTURE
|
Compare to STRUCTURE
|
|
END UNION @
|
END UNION
|
Compare to UNION
|
|
ENTRY
|
ENTRY SCHLEP(
X, Y )
ENTRY SCHLEP( A1, A2, *4
)
ENTRY SCHLEP
|
|
|
EQUIVALENCE
|
EQUIVALENCE (
V(1), A(1,1) )
EQUIVALENCE ( V,
A )
EQUIVALENCE (X,V(10)), (P,D,Q)
|
|
|
EXTERNAL
|
EXTERNAL RNGKTA,
FIT
|
|
|
FORMAT
|
10 FORMAT(//2X,2I3,3F6.1,4E12.2,
2A6,3L2)
10 FORMAT(// 2D6.1,
3G12.2 )
10 FORMAT(2I3.3,3G6.1E3,4E12.2E3)
| |
|
10 FORMAT('a quoted
string',
" another", I2)
10 FORMAT(18Hhollerith
string, I2)
10 FORMAT( 1X, T10,
A1, T20, A1 )
|
Strings @
Hollerith
Tabs
|
|
10 FORMAT(5X,TR10,A1,TR10,A1,TL5,
A1)
10 FORMAT(" Init=",
I2, :, 3X,
"Last=", I2)
10 FORMAT(1X,"Enter
path name ", $)
|
Tab right, left
:
$
|
|
10 FORMAT( F4.2,
Q, 80 A1
10 FORMAT('Octal ',O6,',
Hex ',Z6 )
10 FORMAT( 3F<N>.2
)
|
Q @
Octal, hex @
Variable expression @
|
|
FUNCTION
|
FUNCTION Z( A,
B )
FUNCTION W( P,D, *9 )
CHARACTER
FUNCTION R*4(P,D,*9 )
INTEGER*2
FUNCTION M( I, J )
|
Short integer @
|
|
GO
TO
|
GO TO 99
|
Unconditional
|
|
GO TO I, ( 10,
50, 99 )
GO TO I
|
Assigned
|
|
GO TO ( 10, 50,
99), I
|
Computed
|
|
IF
|
IF ( I -K ) 10,
50, 90
|
Arithmetic IF
|
|
IF ( L ) RETURN
|
LOGICAL IF
|
|
IF ( L ) THEN
N=N+1
CALL CALC
ELSE
K=K+1
CALL DISP
ENDIF
|
BLOCK IF
|
|
IF ( C .EQ. 'a'
) THEN
NA=NA+1
CALL APPEND
ELSE IF ( C .EQ.
'b' ) THEN
NB=NB+1
CALL BEFORE
ELSE IF ( C .EQ.
'c' ) THEN
NC=NC+1
CALL CENTER
END IF
|
BLOCK IF
With ELSE
IF
|
|
IMPLICIT
|
IMPLICIT COMPLEX
(U-W,Z)
IMPLICIT UNDEFINED (A-Z)
|
|
|
INCLUDE @
|
INCLUDE 'project02/header'
|
|
|
INQUIRE
|
INQUIRE( UNIT=3,
OPENED=OK )
INQUIRE( FILE='mydata',
EXIST=OK )
INQUIRE( UNIT=3, OPENED=OK, IOSTAT=ERRNO
)
|
|
|
INTEGER
|
INTEGER C, D(4)
INTEGER
C*2
INTEGER*4 A, B, C
|
Short integer @
|
|
INTEGER A/ 100
/, B, C / 9 /
|
Initialize A and C @
|
|
INTRINSIC
|
INTRINSIC SQRT,
EXP
|
|
|
LOGICAL
|
LOGICAL C
LOGICAL
B*1, C*1
LOGICAL*1 B, C
LOGICAL*4
A, B, C
|
@
@
@
|
|
LOGICAL B / .FALSE.
/, C
|
Initialize B @
|
|
Map @
|
MAP
CHARACTER *18 MAJOR
END MAP
MAP
INTEGER*2 CREDITS
CHARACTER*8
GRAD_DATE
END MAP
|
Compare to STRUCTURE and UNION
|
|
NAMELIST @
|
NAMELIST /CASE/
S, N, D
|
|
|
OPEN
|
OPEN( UNIT=3,
FILE="data.test" )
OPEN( UNIT=3,
IOSTAT=ERRNO )
|
|
|
OPTIONS @
|
OPTIONS /CHECK
/EXTEND_SOURCE
|
|
|
PARAMETER
|
PARAMETER (A="xyz"),
(PI=3.14)
PARAMETER (A="z", PI=3.14)
PARAMETER
X=11, Y=X/3
|
@
|
|
PAUSE
|
PAUSE
|
|
|
POINTER @
|
POINTER ( P, V
), ( I, X )
|
|
|
PRAGMA @
|
EXTERNAL RNG !
$PRAGMA C(RNG)
|
C() directive
|
|
PROGRAM
|
PROGRAM FIDDLE
|
|
|
PRINT
|
PRINT *, A, I
|
List-directed
|
|
PRINT 10, A, I
|
Formatted
|
|
PRINT 10, M
|
Array M
|
|
PRINT 10, (M(I),I=J,K)
|
Implied-DO
|
|
PRINT 10, C(I:K)
|
Substring
|
|
PRINT '(A6,I3)',
A, I
PRINT FMT='(A6,I3)', A, I
|
Character constant format
|
|
PRINT S, I
PRINT
FMT=S, I
|
Switch variable has format number
|
|
PRINT G
|
Namelist @
|
|
READ
|
READ *, A, I
|
List-directed
|
|
READ 1, A, I
|
Formatted
|
|
READ 10, M
|
Array M
|
|
READ 10, (M(I),I=J,K)
|
Implied-DO
|
|
READ 10, C(I:K)
|
Substring
|
|
READ '(A6,I3)',
A, I
|
Character constant format
|
|
|
READ( 1, 2 ) X,
Y
READ( UNIT=1, FMT=2) X,Y
READ(
1, 2, ERR=8,END=9) X,Y
READ(UNIT=1,FMT=2,ERR=8,END=9)
X,Y
|
Formatted read from a file
|
|
READ( *, 2 ) X,
Y
|
Formatted read from standard input
|
|
READ( *, 10 )
M
|
Array M
|
|
READ( *, 10 )
(M(I),I=J,K)
|
Implied-DO
|
|
READ( *, 10) C(I:K)
|
Substring
|
|
READ( 1, * ) X,
Y
READ( *, * ) X, Y
|
List-directed from file--from standard input
|
|
READ( 1, '(A6,I3)')
X, Y
READ( 1, FMT='(A6,I3)')
X, Y
|
Character constant format
|
|
READ( 1, C ) X,
Y
READ( 1, FMT=C ) X, Y
|
|
READ( 1, S ) X,
Y
READ( 1, FMT=S ) X, Y
|
Switch variable has format number
|
|
READ( *, G )
READ(
1, G )
|
Namelist read @
Namelist read from a file @
|
|
READ( 1, END=8,
ERR=9 ) X, Y
|
Unformatted direct access
|
|
READ( 1, REC=3
) V
READ( 1 ' 3 ) V
|
Unformatted direct access
|
|
READ( 1, 2, REC=3
) V
|
Formatted direct access
|
|
READ( CA, 1, END=8,
ERR=9 ) X, Y
|
Internal formatted sequential
|
|
READ( CA, *, END=8,
ERR=9 ) X, Y
|
Internal list-directed sequential access @
|
|
READ(CA, REC=4,
END=8, ERR=9) X, Y
|
Internal direct access @
|
|
REAL
|
REAL R, M(4)
REAL
R*4
REAL*8 A, B, C
REAL*16
A, B, C SPARC only
|
@
Double precision @
Quad precision @
|
|
REAL A / 3.14
/, B, C / 100.0 /
|
Initialize A and C@
|
|
RECORD @
|
RECORD /PROD/
CURR,PRIOR,NEXT
|
|
|
RETURN
|
RETURN
RETURN
2
|
Standard return
Alternate return
|
|
REWIND
|
REWIND 1
REWIND
I
REWIND ( UNIT=U, IOSTAT=I, ERR=9
)
|
|
|
SAVE
|
SAVE A, /B/, C
SAVE
|
|
|
STATIC @
|
STATIC A, B, C
STATIC
REAL P, D, Q
IMPLICIT STATIC REAL
(X-Z)
|
|
|
STOP
|
STOP
STOP
"all done"
|
|
|
STRUCTURE
|
STRUCTURE /PROD/
INTEGER*4 ID / 99 /
CHARACTER*18
NAME
CHARACTER*8 MODEL / 'XL'
/
REAL*4 COST
REAL*4 PRICE
END STRUCTURE
|
|
|
SUBROUTINE
|
SUBROUTINE SHR(
A, B, *9 )
SUBROUTINE SHR( A,
B, &9 )
SUBROUTINE SHR( A,
B )
SUBROUTINE SHR
|
Alternate return @
|
|
TYPE @
|
TYPE *, A, I
|
Compare to PRINT
|
|
UNION @
|
UNION
MAP
CHARACTER*18 MAJOR
END MAP
MAP
INTEGER*2 CREDITS
CHARACTER*8 GRAD_DATE
END
MAP
END UNION
|
Compare to STRUCTURE
|
|
VIRTUAL @
|
VIRTUAL M(10,10),
Y(100)
|
|
|
VOLATILE @
|
VOLATILE V, Z,
MAT, /INI/
|
|
|
WRITE
|
WRITE( 1, 2 )
X, Y }
WRITE( UNIT=1, FMT=2 )
X, Y
WRITE( 1, 2, ERR=8, END=9
) X, Y
WRITE(UNIT=1,FMT=2,ERR=8,END=9)
X,Y
|
Formatted write to a file
|
|
WRITE( *, 2 )
X, Y
WRITE( *, 10 ) M
|
Formatted write to stdout
Array M
|
|
WRITE( *, 10 )
(M(I),I=J,K)
|
Implied-DO
|
|
WRITE( *, 10)
C(I:K)
|
Substring
|
|
WRITE( 1, * )
X, Y
WRITE( *, * ) X, Y
|
List-directed write to a file
List-directed write to standard output
|
|
WRITE( 1, '(A6,I3)')
X, Y
WRITE( 1, FMT='(A6,I3)')
X, Y
|
Character constant format
|
|
WRITE( 1, C )
X, Y
WRITE( 1, FMT=C ) X, Y
|
Character variable format
|
|
WRITE( 1, S )
X, Y
WRITE( 1, FMT=S ) X, Y
|
Switch variable has format number
|
|
WRITE( *, CASE
)
WRITE( 1, CASE )
|
Namelist write @
Namelist write to a file @
|
|
WRITE( 1, END=8,
ERR=9 ) X, Y
|
Unformatted sequential access
|
|
WRITE( 1, REC=3
) V
WRITE( 1 ' 3 ) V
|
Unformatted direct access
|
|
WRITE( 1, 2, REC=3
) V
|
Formatted direct access
|
|
WRITE( CA, 1,
END=8, ERR=9 ) X, Y
|
Internal formatted sequential
|
|
WRITE( CA, *,
END=8, ERR=9 ) X, Y
|
Internal list-directed sequential access @
|
|
WRITE(CA, REC=4, END=8, ERR=9)
X, Y
|
Internal direct access @
|
|