回 帖 发 新 帖 刷新版面

主题:[讨论]求助:文件执行一部分 以后执行不下去了,请问原因?

现在编辑一个程序时出现一个问题,整个程序是做“把两个存放有序输得文件归并成一个文件,此文件中的数仍有序存放”的,执行时会出现只有前两个文件输出,第三个不能打印出来,我估计在标号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

回复列表 (共7个回复)

沙发

你把完整的程序放在一起才好看吧。可以自己debug,根据你程序的情况,设置断点,然后查看程序的运行情况。或者把程序打印出来,自己一行一行去读,只有这样才能有提高。
语法不明白的话可以边看边查书。

板凳

看别人的程序比自己写一个程序更累,不如把你想做的事情说明白,或许帮你更容易一些。

3 楼


抱歉 我的疏忽 现重新发了一个 里面上传了程序

4 楼


抱歉 我的疏忽 现重新发了一个 里面上传了程序 主要是后面的那个F3文件不能输出啊 感觉没什么问题啊 帮看看吧 
谢谢

5 楼

[quote]你把完整的程序放在一起才好看吧。可以自己debug,根据你程序的情况,设置断点,然后查看程序的运行情况。或者把程序打印出来,自己一行一行去读,只有这样才能有提高。
语法不明白的话可以边看边查书。[/quote]
  
谢谢指导!

6 楼

源程序,输入文件打包上传。

7 楼

在另外一个相似的新帖子上传了 谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册