You are on page 1of 28

FORTRAN

FORTRAN

FORTRAN
FORTRAN

FORTRAN

FORTRAN

OPEN CLOSE

2
-

READ
-

WRITE PRINT

BACKSPACE ENDFILE REWIND

INQUIRE

FORTRAN

16.1
16.1.1

FORTRAN FORTRAN

FORTRAN


ASCII FORTRAN

FORTRAN

ENDFILE

REWIND BACKSPACE

CLOSE OPEN

16.1.2

CPU

INQUIRE OPEN CLOSE WRITE PRINT REWIND ENDFILE


WRITE PRINT ENDFILE

FORTRAN
FORTRAN

FORTRAN

16.1.3

n
1 n-1 n n-1
n

CLOSE
OPEN

1.

2.

16.1.4

FORTRAN

FORTRAN

REWIND BACKSPACE

16.1.5

FORTRAN

NULL BLANK=

16.2

FORTRAN
(R901)
(io-unit)
external-file-unit
*

io-unit

internal-file-unit





0




INQUIRE CLOSE
16-1
SUBROUTINE A
READ (6) X
...
SUBROUTINE B
N=6
REWIND N

16.2.1

OPEN
OPEN CLOSE INQUIRE



CLOSE
CLOSE

OPEN INQUIRE

OPEN

WRITE

16.2.2

OPEN

OPEN OPEN

OPEN (R904)
OPEN ( connect-spec-list )

(connect-spec)(R905)
[ UNIT = ] external-file-unit
IOSTAT = scalar-default-int-variable
ERR = label
FILE = file-name-expr
STATUS = scalar-default-char-expr
ACCESS = scalar-default-char-expr
FORM = scalar-default-char-expr
RECL = scalar-int-expr
BLANK = scalar-default-char-expr
POSITION = scalar-default-char-expr
ACTION = scalar-default-char-expr
DELIM = scalar-default-char-expr
PAD = scalar-default-char-expr

(file-name-expr)(R906)
OPEN
UNIT=(connect-spec-list)
OPEN (external-file-unit)

ERR= OPEN
STATUS= NEW REPLACE FILE=
STATUS= SCRATCH FILE=
STATUS= OLD FILE=

OPEN

OPEN OPEN
FILE=

OPEN

OPEN OPEN
OPEN STATUS= CLOSE
OPEN BLANK=DELIM=
PAD=ERR= IOSTAT=
OPEN POSITION=
OPEN STATUS= OLD
BLANK=DELIM=PAD=

OPEN ERR= IOSTAT= OPEN


OPEN OLD STATUS=
OPEN SCRATCH
SCRATCH
OPEN

16-2
OPEN (10, FILE = 'employee.names', ACTION = 'READ', PAD = 'YES')

OPEN
1 FILE=

FILE=

OPEN STATUS=
SCRATCH

2 STATUS=

OLDNEWSCRATCHREPLACE UNKNOWN

OLD NEW

NEW OPEN OLD

REPLACE OPEN OLD


OPEN
OLD

SCRATCH
CLOSE

SCRATCH
UNKNOWN
UNKNOWN

3 ACCESS=

SEQUENTIAL DIRECT

SEQUENTIAL

4 FORM=

FORMATTED UNFORMATTED

UNFORMATTED
FORMATTED

5 RECL=

6 BLANK=

NULL ZERO

BLANK=

NULL

ZERO 0

NULL

7. POSITION=

ASISREWIND APPEND

REWIND

APPEND

ASIS ASIS
ASIS

8. ACTION=

READWRITEREADWRITE

READ WRITEPRINT ENDFILE

WRITE READ

READWRITE

READWRITE READ WRITE

9. DELIM=

APOSTROPHEQUOTENONE

APOSTROPHE

QUOTE

NONE

NONE

10. PAD=

YESNO

YES

NO

YES

16.2.3

CLOSE

CLOSE
CLOSE (R907)
CLOSE ( close-spec-list )

(close-spec)(R908)
[ UNIT = ] external-file-unit
IOSTAT = scalar-default-int-variable
ERR = label
STATUS = scalar-default-char-expr

CLOSE

UNIT=

ERR= CLOSE

CLOSE
OPEN

CLOSE

CLOSE

CLOSE

SCRATCH
DELETE KEEP

16-3
CLOSE (10, STATUS = 'KEEP')

CLOSE STATUS=

KEEPDELETE

KEEP CLOSE SCRATCH

KEEP CLOSE

KEEP CLOSE

DELETE CLOSE

KEEP CLOSE SCRATCH


DELETE

16.3

READ

WRITE PRINT

READ (R909)
READ ( io-control-spec-list ) [ input-item-list ]
READ format [ , input-item-list ]

WRITE (R910)
WRITE ( io-control-spec-list ) [ output-item-list ]

PRINT (R911)
PRINT format [ , output-item-list ]

16-4
READ (6, *) SIZE
READ 10, A, B
WRITE (6, 10) A, S, J
PRINT 10, A, S, J
10 FORMAT (2E16.3, I5)

16.3.1

(R912)
[ UNIT = ] io-unit
[ FMT = ] format
[ NML = ] namelist-group-name
REC = scalar-int-expr
IOSTAT = scalar-default-int-variable
ERR = label
END = label
ADVANCE = scalar-default-char-expr
SIZE = scalar-default-int-variable
EOR = label

WRITE END=EOR= SIZE=


ERR=EOR= END=

UNIT=

FMT=
UNIT=

NML=
UNIT=

REC=

REC= END=

ADVANCE=

EOR= ADVANCE=

SIZE= ADVANCE=

SIZE= NO ADVANCE=

EOR= NO ADVANCE=

IOSTAT= SIZE=

do do

IOSTAT= SIZE=
do

16-5 READ
READ (IOSTAT = IOS, UNIT = 6, FMT = '(10F8.2)') A, B

1. FMT=
FMT=(R913)
default-char-expr
label

(label) FORMAT
(default-char-expr)
7

*
16-6
READ (6, FMT = "(" // CHAR_FMT // ")" ) X, Y, Z

CHAR_FMT
2. NML=
NML=

3. REC=
The REC=

REC=

4. IOSTAT=
IOSTAT= IOSTAT=

16-7
READ (FMT = "(E8.3)", UNIT = 3, IOSTAT = IOSS) X
IF (IOSS < 0) THEN
! 3 .
CALL END_PROCESSING
ELSE IF (IOSS > 0) THEN
!
CALL ERROR_PROCESSING
END IF

5.
ERR=

IOSTAT=

READ SIZE=

ERR=

6.
END=

IOSTAT=

END=

7.
EOR=

PAD= YES

IOSTAT=

SIZE=

EOR=

8. ADVANCE=
(scalar-default-char-expr) YES NO
NO
YES

YES
9. SIZE=
SIZE=

16.3.2

(input-item)(R914)
variable
io-implied-do

(output-item)(R915)
expr
io-implied-do

do (io-implied-do)(R916)
( io-implied-do-object-list , io-implied-do-control )

do (io-implied-do-object)(R917)
input-item
output-item

do (io-implied-do-control)(R918)
do-variable = scalar-int-expr , &
& scalar-int-expr [ , scalar-int-expr ]

do

(input-item-list) do (io-implied-do-object)

(output-item-list) do (io-implied-do-object)

do do do

do do do do
do

do DO

16-8
INTEGER A (100), J (100)
...
READ *, A (A) !
READ *, A (LBOUND (A, 1) : UBOUND (A, 1)) !
READ *, A (J) ! J
READ *, A (A (1) : A (10)) !

16-9
WRITE (LP, FMT = '(10F8.2)') (LOG (A (I)), I = 1, N + 9, K), G

do

16.3.3

(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8) IOSTAT= SIZE=

16.3.4

16-1
16-1

1
PRINT WRITE

16.3.5

(namelist-group-object-list)

An end-of-file condition occurs.

(/)

16.4

BACKSPACE ENDFILE REWIND


BACKSPACE (R919)
BACKSPACE external-file-unit
BACKSPACE ( position-spec-list )

ENDFILE (R920)
ENDFILE external-file-unit
ENDFILE ( position-spec-list )

REWIND (R921)
REWIND external-file-unit
REWIND ( position-spec-list )

(position-spec)(R922)
[ UNIT = ] external-file-unit
IOSTAT = scalar-default-int-variable
ERR = label

ERR=
UNIT=

ACTION= READ
ENDFILE

16.4.1

BACKSPACE

BACKSPACE

BACKSPACE
16-10 BACKSPACE
BACKSPACE (10, ERR = 20)

16.4.2

ENDFILE

ENDFILE

ENDFILE
BACKSPACE REWIND

ENDFILE
16-11
ENDFILE K

16.4.3

ENDFILE

REWIND

REWIND
REWIND
REWIND
16-12
REWIND 10

REWIND

16.5

INQUIRE
INQUIRE

FILE=

UNIT=

IOLENGTH=

INQUIRE
INQUIRE
INQUIRE (R923)
INQUIRE ( inquire-spec-list )
INQUIRE ( IOLENGTH = scalar-default-int-variable ) &
&output-item-list

16-13
INQUIRE (IOLENGTH = IOL) A (1:N)
INQUIRE (UNIT = JOAN, OPENED = LOG_01, NAMED = LOG_02, &
FORM = CHAR_VAR, IOSTAT = IOS)

FORTRAN
FORTRAN
FORTRAN

FORTRAN
FORTRAN

FORTRAN 95

17.1

FORMAT

17.1.1

FORMAT

FORMAT (R1001)
FORMAT format-specification

(format-specification)(R1002)
( [ format-item-list ] )

(format-item-list) 17.2
FORMAT
FORMAT

P F, E, EN, ES, D, G





17-1
5 FORMAT (1PE12.4, I10)
9 FORMAT (I12, /, ' Dates: ', 2 (2I3, I5))

17.1.2

FORMAT

FORMAT

17-2

2 ISN'T 3

WRITE (6, 100) 2, 3


100 FORMAT (1X, I1, 1X, 'ISN''T', 1X, I1)
WRITE (6, '(1X, I1, 1X, ''ISN''''T'', 1X, I1)') 2, 3
WRITE (6, '(A)') ' 2 ISN''T 3'

17.2

(format-item)(R1003)
[ r ] data-edit-desc
control-edit-desc
char-string-edit-desc
[ r ] ( format-item-list )

r(R1004)

1. (R1005)

Iw[.m]
Bw[.m]
Ow[.m]
Zw[.m]
Fw.d
Ew.d[Ee]
EN w . d [ E e ]
ES w . d [ E e ]
Gw.d[Ee]
Lw
A[w]
Dw.d

w(R1006)m(R1007)d(R1008)e(R1009) I, B, O, Z, F, E, EN, ES, G, L, A,


D 17.5

e
w I, B, O, Z, F 0
w, m, d, e
2.(R1010)

position-edit-desc
[r]/

sign-edit-desc
kP
blank-interp-edit-desc

k(R1011)
(position-edit-desc)(R1012)
Tn
TL n
TR n
nX

n(R1013)
(sign-edit-desc)(R1014)
S
SP
SS

(R1015)
BN
BZ

kP k
T, TL, TR, X, , , S, SP, SS, P, BN, BZ
17-6
3. (R1016)

17.3

()

0
0 0 DO

r r

r 1

F, E, EN, ES, D, G

(17.6.5)(17.6.4)(17.6.6)

17-3
10 FORMAT (1X, 2(F10.3, I5))

WRITE (10,10) 10.1, 3, 4.7, 1, 12.4, 5, 5.2, 6

10 FORMAT (1X, F10.3, I5, F10.3, I5/F10.3, I5, F10.3, I5)

17.4

TTLTR X 17.6.1

17.6.2

17.5

,
,

17.5.1

IBOZFEENES, D,G

BLANK=

BN BZ

0
FEENESD G
IFEENESDG 0 SSPSS

Ew.dEe
ENw.dEeESw.dEeGw.dEe w
SP
IBOZF w 0

w 0

1.
Iw,Iw.m,Bw,Bw.m,Ow,Ow.m,Zw Zw.m
I (signed-digit-string)(R401)
BOZ (R408, R409, R410)

w w 0 w
0

G 17.5.4.1

Iw 0
0

BwOwZw 0
0

m Iw.mBw.mOw.mZw.m
IwBwOwZw 0
m w w 0

m 0 0
m w 0 0
2.
FEENES D FEENES D
G 17.5.4.1

1. F
Fw.d w d w 0
w 0 F
0
d
d
\

E 0
D 0 D E

-k k

1 0 0
0 0
2. E D
Ew.dDw.d Ew.dEe w d (
1 ) e e
d F

[] [0].x1x2xdexp

|exp| > 999 Ew.d Dw.d


3. EN
EN
[] yyy.x1x2xdexp

0 1 1000
ENw.d ENw.dEe w d e
F |exp| > 999 ENw.d
17-4

6.421
.5

SS, EN12.3
6.421E+00
500.000E03

.00217

2.170E03

4721.3

4.721E+03

4. ES
ES 0
1 10

[] y.x1x2xdexp

ESw.d ESw.dEe w d
e F |exp| > 999 ESw.d
17-5

SS, ES12.3

6.421

6.421E+00

.5

5.000E01

.00217

2.170E-03

4721.3

4.721E+03

5.
FORTRAN

17.5.2

Lw w G
17.5.4
T F T F

.TRUE..FALSE
w-1 T F

17.5.3

A[w]
G
A G
A w w A w

LEN A w w LEN
LEN w LEN w LEN-w
A w LEN w-LEN LEN
w LEN w

17.5.4
Gw.d Gw.dEe
w d e
d e
1.
Gw.d Gw.dEe 17.5.1
Gw.dEe Ew.dEe

Gw.d Gw.dEe
Iw w 0

F
F
2.
Gw.d Gw.dEe Lw
3.
Gw.d Gw.dEe Aw

17.6

FORTRAN

17.6.1
TTLTR X
T
X
nX TRn
TTLTR X

TTLTR X

TTLTR X

17.6.2

17.6.3

17.6.4

SSP SS

SSS SP

SP

SS

SSS SP IFEENESD
G

17.6.5

kP k
0 FEENESD G
P

FEENESDG F
10k

FEENESDG

ED 10k k

G F
E E
ENES

17.7

PROGRAM test_getarg
INTEGER :: ia
CHARACTER(len=32) :: arg

CALL getarg(1, arg)


WRITE (*,*) arg
read(arg,'(I5)') ia
WRITE (*,*) ia

PAUSE
END PROGRAM

Integer Function GetFileN( iFileUnit )


Implicit None
Logical , Parameter :: bIsSunRiseFromEast = .True.
Integer , Intent( IN ) :: iFileUnit
Character*(1) :: cDummy
GetFileN = 0
Rewind( iFileUnit )
Do While ( bIsSunRiseFromEast )
Read( iFileUnit , * , End = 999 , Err = 999 ) cDummy
GetFileN = GetFileN + 1
End Do
999 Rewind( iFileUnit )
Return
End Function GetFileN

You might also like