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
|
PROGRAM FORMTST
DOUBLE PRECISION D
INTEGER I, IA(4), IM(2,2)
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_arr_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
IF (CTYPE.EQ.'A') THEN
READ(77, INFORM, END=177, ERR=77) IA
WRITE (*, '(A1''FORMAT''A40)') 'I', IFORM
WRITE(*, IFORM) IA
ELSE IF (CTYPE.EQ.'M') THEN
READ(77, INFORM, END=177, ERR=77) IM
WRITE (*, '(A1''FORMAT''A40)') 'I', IFORM
WRITE(*, IFORM) IM
C REMEMBER IT GOES 'VERTICALLY'!
C WRITE(*, IFORM) IM(1,1), IM(1,2), IM(2,1), IM(2,2)
ENDIF
READ (77, *)
WRITE (*, '()')
GOTO 10
77 CONTINUE
C "HANDLE" ERROR
WRITE (*, '(''ERROR!!'')')
READ (77, *)
WRITE (*, '()')
GOTO 10
177 CONTINUE
WRITE (*, '(''END'')')
END
|