爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11140|回复: 21

[求助] 奇怪的Fortran问题

[复制链接]

新浪微博达人勋

发表于 2015-5-13 09:14:16 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
我用下面这段程序判断一个文件的行数
integer line_unknow
character hehe
real unknow(3,3)
open(125,file='************************\unknow.txt',status='old')
line_unknow=0
do while(125)
  read(125,*,end=200) hehe
  line_unknow=line_unknow+1
enddo

200 continue
write(*,*)line_unknow

end

奇怪的问题在于当程序中标为红色的open语句中的标号为偶数时,程序直接不能进入do while循环计算行数,当标号为奇数时则可以计算出文件行数,找了好久才发现这样的问题,不知道是为什么,请高手指教一下,是程序的语句问题还是什么其他问题呢?谢谢。
为了测试这段程序我用的数据如下:
86.923  27.898  5000
87.048  28.069  5600
86.863  28.111  5220


密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-13 09:15:29 | 显示全部楼层
非常迷惑啊,期待各位的指点和解答,自己先顶一下哎
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2015-5-13 09:44:14 | 显示全部楼层
标号,你说的是125么?这个是和read里面的125匹配的。
另外        do while (.true.)
这样写就ok了,不必要写125
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-13 09:57:31 | 显示全部楼层
你修改文件标号的时候,会将while后面括号的一起跟着改吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-13 10:00:02 | 显示全部楼层
本帖最后由 言深深 于 2015-5-13 10:05 编辑
虫儿飞 发表于 2015-5-13 09:57
你修改文件标号的时候,会将while后面括号的一起跟着改吗?

把while后面括号写成.true.即可,逻辑型变量,文件标号就无所谓奇数还是偶数了。
当然非要问个所以然的话:
偶数的话,末位是0;
奇数的话,末位是1。


这样逻辑判断的时候,奇数和true的判断是一致的,自然执行了。

评分

参与人数 1金钱 +15 贡献 +2 体力 +40 收起 理由
言深深 + 15 + 2 + 40

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-13 10:08:55 | 显示全部楼层
这个跟编译器有关系
powerstation 4.0里面  就可以用do while(123456)
但是在cvf里面 就要用ture
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-5-13 10:19:53 | 显示全部楼层
这个可跟编译器有关系
powerstation 4.0里面  就可以用do while(123456)
但是在cvf里面 就要用ture

评分

参与人数 1金钱 -3 收起 理由
lqouc -3

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-13 14:20:30 | 显示全部楼层
虫儿飞 发表于 2015-5-13 10:00
把while后面括号写成.true.即可,逻辑型变量,文件标号就无所谓奇数还是偶数了。
当然非要问个所以然的 ...

回答的真是精彩,确实改成.true.就没问题了,但是对您说的这个关于偶数是0,奇数是1还是不了解是什么高端的判断啊,期待解答一下,谢谢您
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-13 14:24:06 | 显示全部楼层
topmad 发表于 2015-5-13 10:08
这个跟编译器有关系
powerstation 4.0里面  就可以用do while(123456)
但是在cvf里面 就要用ture

正在用您分享的IDW程序做一个插值运算,然后总也运行不了,然后发现的这个问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-5-13 14:27:41 | 显示全部楼层
topmad 发表于 2015-5-13 10:08
这个跟编译器有关系
powerstation 4.0里面  就可以用do while(123456)
但是在cvf里面 就要用ture

正在用您分享的IDW程序做一个插值运算,然后总也运行不了,然后发现的这个问题
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表