主题:[讨论]求助:文件执行一部分 以后执行不下去了,请问原因?
现在编辑一个程序时出现一个问题,整个程序是做“把两个存放有序输得文件归并成一个文件,此文件中的数仍有序存放”的,执行时会出现只有前两个文件输出,第三个不能打印出来,我估计在标号30后的语句就执行不下去了,请帮忙看下谢谢,最好能分析下原因吧···
另外,标号100后的语句没什么问题,我照着老师的程序搞下来的。
部分代码:
30 CONTINUE
REWIND(1)
REWIND(2)
OPEN (UNIT=3,FILE='F3.DAT',FORM='UNFORMATTED', STATUS='NEW',
$ ACCESS='DIRECT',RECL=4)
M=1
N=1
K=1
100 READ (1,REC=M, IOSTAT=IO1) IA
M=M+1
READ (2,REC=N, IOSTAT=IO2) IB
N=N+1
IF(IO1 .EQ. 0 .AND. IO2 .EQ. 0)THEN
IF(IA .LT. IB)THEN
WRITE (UNIT=3, REC=K)IA
K=K+1
READ (1, REC=M, IOSTAT=IO1) IA
M=M+1
ELSE
WRITE (UNIT=3, REC=K) IB
K=K+1
READ (2, REC=N, IOSTAT=IO2) IB
N=N+1
ENDIF
GOTO 100
ELSE
IF(IO1 .LT. 0)THEN
300 WRITE (UNIT=3, REC=K) IB
K=K+1
READ (2,REC=N, IOSTAT=IO2) IB
N=N+1
IF(IO2 .EQ. 0)THEN
GOTO 300
ELSE
GOTO 200
ENDIF
ENDIF
IF(IO2 .LT. 0)THEN
400 WRITE (UNIT=3, REC=K)IA
K=K+1
READ (1,REC=M,IOSTAT=IO1) IA
M=M+1
IF(IO1 .EQ. 0)THEN
GOTO 400
ELSE
GOTO 200
ENDIF
ENDIF
ENDIF
200 CLOSE(UNIT=1)
CLOSE(UNIT=2)
PRINT *,'F3.DAT:'
REWIND(3)
600 READ (UNIT=3,END=500) I
PRINT *, I
GOTO 600
500 CLOSE(UNIT=3)
END
另外,标号100后的语句没什么问题,我照着老师的程序搞下来的。
部分代码:
30 CONTINUE
REWIND(1)
REWIND(2)
OPEN (UNIT=3,FILE='F3.DAT',FORM='UNFORMATTED', STATUS='NEW',
$ ACCESS='DIRECT',RECL=4)
M=1
N=1
K=1
100 READ (1,REC=M, IOSTAT=IO1) IA
M=M+1
READ (2,REC=N, IOSTAT=IO2) IB
N=N+1
IF(IO1 .EQ. 0 .AND. IO2 .EQ. 0)THEN
IF(IA .LT. IB)THEN
WRITE (UNIT=3, REC=K)IA
K=K+1
READ (1, REC=M, IOSTAT=IO1) IA
M=M+1
ELSE
WRITE (UNIT=3, REC=K) IB
K=K+1
READ (2, REC=N, IOSTAT=IO2) IB
N=N+1
ENDIF
GOTO 100
ELSE
IF(IO1 .LT. 0)THEN
300 WRITE (UNIT=3, REC=K) IB
K=K+1
READ (2,REC=N, IOSTAT=IO2) IB
N=N+1
IF(IO2 .EQ. 0)THEN
GOTO 300
ELSE
GOTO 200
ENDIF
ENDIF
IF(IO2 .LT. 0)THEN
400 WRITE (UNIT=3, REC=K)IA
K=K+1
READ (1,REC=M,IOSTAT=IO1) IA
M=M+1
IF(IO1 .EQ. 0)THEN
GOTO 400
ELSE
GOTO 200
ENDIF
ENDIF
ENDIF
200 CLOSE(UNIT=1)
CLOSE(UNIT=2)
PRINT *,'F3.DAT:'
REWIND(3)
600 READ (UNIT=3,END=500) I
PRINT *, I
GOTO 600
500 CLOSE(UNIT=3)
END