Previous Next Contents Index Doc Set Home


Sample Statements

B


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.

In the table, the following conventions are used:

C

Character variable

N

Numeric variable

CA

Character array

L

Logical variable

I

Integer variable

S

Switch variable

U

External unit

Nonstandard feature

R

Real variable



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

COMPLEX U / (1.0,1.0) /, V /(1.0,10.0) /

Double complex

Quad complex (SPARC)

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 )

X I F E A L

D G

w

10 FORMAT('a quoted string', " another", I2)

10 FORMAT( 18Ha hollerith 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 RNGKTA, FIT !$PRAGMA C(RNGKTA, FIT)

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

Double precision

Quad precision (SPARC only)

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 gone"

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


Previous Next Contents Index Doc Set Home