Fortran Coder

标题: FORTRAN中WRITE不执行? [打印本页]

作者: Yatou    时间: 2014-3-18 21:09
标题: FORTRAN中WRITE不执行?
各位好

[Fortran] 纯文本查看 复制代码
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
看了半天,不知这是什么语言写的。。。。。
作者: Yatou    时间: 2014-3-18 21:14
FORTRAN 77,是有些不规范,大概表明这样的意思。 SORRY
作者: 楚香饭    时间: 2014-3-18 21:19
各种拼写错误吧。

IOUTFILE1 写成了 IOUTFIEL1 之类的。

建议你用 Implicit None

[Fortran] 纯文本查看 复制代码
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
chuxf 发表于 2014-3-18 21:19
各种拼写错误吧。

IOUTFILE1 写成了 IOUTFIEL1 之类的。

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

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

再次道歉。我是想删繁就简的,原来的部分没有粘贴过来,示意地问一下。结果是一种不严谨的态度,浪费了专家的时间……
作者: 楚香饭    时间: 2014-3-18 21:26
这可能性就比较多了。
1.有可能执行了,但 IOUTFILE1 的值不对,所以你就没看到。比如这个代码中,拼错了 IOUTFILE1
2.有可能没执行,是因为某些值错误,导致了某些 if 未满足条件,执行的路线偏离了。
总之可能很多,最好是 Debug 调试跟踪以便确定。
作者: Yatou    时间: 2014-3-18 21:31
chuxf 发表于 2014-3-18 21:26
这可能性就比较多了。
1.有可能执行了,但 IOUTFILE1 的值不对,所以你就没看到。比如这个代码中,拼错了 I ...

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

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

ANYWAY,THX  继续讨厌着大写字母吧……HEHE
作者: 楚香饭    时间: 2014-3-18 21:34
Yatou 发表于 2014-3-18 21:31
好, 我明白之后,再回来,确认我的原因,写在这里

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

我们这里有专门的 Debug 教程:
http://www.fcode.cn/guide-44-1.html




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2