1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
PROGRAM FORMTST
DOUBLE PRECISION D
INTEGER I
CHARACTER*40 INFORM, C, IFORM, CFORM, DFORM, LFORM, LINE
CHARACTER*1 CTYPE
LOGICAL L
DATA IFORM /'(I10)'/
DATA DFORM /'(E16.3)'/
DATA LFORM /'(L1)'/
DATA CFORM /'(A40)'/
OPEN (UNIT=77,FILE='read_tests.txt' )
C READ TEST FILE
10 CONTINUE
READ(77, '(A1,6X,A40)', END=177, ERR=77) CTYPE, INFORM
WRITE (*, '(A1''FORMAT''A40)') CTYPE, INFORM
READ(77, '(A)', END=177, ERR=77) LINE
WRITE (*, '(A40)') LINE
IF (CTYPE.EQ.'I') THEN
READ (LINE, INFORM, END=177, ERR=77) I
WRITE (*, '(A1''FORMAT''A40)') CTYPE, IFORM
WRITE (*, IFORM) I
ELSE IF (CTYPE.EQ.'D') THEN
READ(LINE, INFORM, END=177, ERR=77) D
WRITE (*, '(A1''FORMAT''A40)') CTYPE, DFORM
WRITE(*, DFORM) D
ELSE IF (CTYPE.EQ.'L') THEN
READ(LINE, INFORM, END=177, ERR=77) L
WRITE (*, '(A1''FORMAT''A40)') CTYPE, LFORM
WRITE(*, LFORM) L
ELSE IF (CTYPE.EQ.'C') THEN
READ(LINE, INFORM, END=177, ERR=77) C
WRITE (*, '(A1''FORMAT''A40)') CTYPE, CFORM
WRITE(*, CFORM) C
ENDIF
READ (77, *)
WRITE (*, '()')
GOTO 10
77 CONTINUE
C "HANDLE" ERROR
WRITE (*, '(''ERROR!!'')')
READ (77, *)
WRITE (*, '()')
GOTO 10
177 CONTINUE
C WRITE (*, '(''END'')')
END
|