Yatou 发表于 2014-3-18 21:09:31

FORTRAN中WRITE不执行?

各位好

PROGRAM TEST

!IN THE MAIN BODY

IOUTFILE=100
IOUTFIEL1=101

OPEN (IOUTFILE,'FILE NAME')

OPEN(IOUTFILE1,'FILE NAME')

CALL PRNT()

! THE MAIN BODY IGNORED FOR THIS MOMENT……


STOP
END PROGRAM

SUBROUTINE PRNT(IOUFILE,IOUTFILE1)

DO I=1,N
WRITE(IOUTFILE,'FORMAT') SOME FACTORS.....
ENDDO

!THE PREVIOUS PART WORK NORMALLY

WRITE(IOUTFILE1,*) SOME FACTOR!THE ERROR

!THIS 'WRITE' DOESN'T WORK, WHY?


RETURN
END

AND THE FUNNY THING IS, IF THE PROGRAM WORK PERFECTLY, THE "WRITE" COULD BE EXCUTED..


也就是说,为什么啊?为什么不执行第二个WRITE语句?
现阶段,整个程序跑不通,如果跑通的时候,它是可以被执行的……


为什么,谢谢各位……


BY YATOU


yeoman 发表于 2014-3-18 21:12:20

看了半天,不知这是什么语言写的。。。。。

Yatou 发表于 2014-3-18 21:14:54

FORTRAN 77,是有些不规范,大概表明这样的意思。 SORRY

楚香饭 发表于 2014-3-18 21:19:04

各种拼写错误吧。

IOUTFILE1 写成了 IOUTFIEL1 之类的。

建议你用 Implicit None

PROGRAM TEST
Implicit None
integer :: IOUTFILE , IOUTFILE1
!IN THE MAIN BODY

IOUTFILE=100
IOUTFILE1=101

OPEN(IOUTFILE,File='file1.txt')

OPEN(IOUTFILE1,File='file2.txt')

CALL PRNT(IOUTFILE,IOUTFILE1)

! THE MAIN BODY IGNORED FOR THIS MOMENT……


STOP
END PROGRAM

SUBROUTINE PRNT(IOUTFILE,IOUTFILE1)
Implicit None
integer :: IOUTFILE , IOUTFILE1
Integer :: n , i
n = 3
DO I=1,N
WRITE(IOUTFILE,*) 's'
ENDDO

!THE PREVIOUS PART WORK NORMALLY

WRITE(IOUTFILE1,*) 'vs'!SOME FACTOR!THE ERROR

!THIS 'WRITE' DOESN'T WORK, WHY?


RETURN
END

!AND THE FUNNY THING IS, IF THE PROGRAM WORK PERFECTLY, THE "WRITE" COULD BE EXCUTED..

Yatou 发表于 2014-3-18 21:23:05

chuxf 发表于 2014-3-18 21:19
各种拼写错误吧。

IOUTFILE1 写成了 IOUTFIEL1 之类的。


不是拼写错误,这些不是我从程序里复制过来的,是我在.TXT文本里输入的,所以,出现的个别拼写在原程序中是没有的。不好意思,没有说清楚,浪费了大家的时间。

就是,没有什么解释,对这种WRITE语句,如果程序不能完全跑通,它就不执行的原因?

再次道歉。我是想删繁就简的,原来的部分没有粘贴过来,示意地问一下。结果是一种不严谨的态度,浪费了专家的时间……

楚香饭 发表于 2014-3-18 21:26:53

这可能性就比较多了。
1.有可能执行了,但 IOUTFILE1 的值不对,所以你就没看到。比如这个代码中,拼错了 IOUTFILE1
2.有可能没执行,是因为某些值错误,导致了某些 if 未满足条件,执行的路线偏离了。
总之可能很多,最好是 Debug 调试跟踪以便确定。

Yatou 发表于 2014-3-18 21:31:47

chuxf 发表于 2014-3-18 21:26
这可能性就比较多了。
1.有可能执行了,但 IOUTFILE1 的值不对,所以你就没看到。比如这个代码中,拼错了 I ...

好, 我明白之后,再回来,确认我的原因,写在这里

还有,我能说我不会DEBUG跟踪么……

ANYWAY,THX继续讨厌着大写字母吧……HEHE

楚香饭 发表于 2014-3-18 21:34:35

Yatou 发表于 2014-3-18 21:31
好, 我明白之后,再回来,确认我的原因,写在这里

还有,我能说我不会DEBUG跟踪么……


我们这里有专门的 Debug 教程:
http://www.fcode.cn/guide-44-1.html
页: [1]
查看完整版本: FORTRAN中WRITE不执行?