爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: topmad

[经验总结] 利用FORTRAN 读取文件行数的小代码

  [复制链接]

新浪微博达人勋

发表于 2013-1-5 00:35:24 | 显示全部楼层
这个好,之前每次确定行数都是要把文件读两遍,很费劲儿。欧竹的很好用,顶一下,谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-26 14:42:54 | 显示全部楼层

采用topmad方法读取行数,运行一直有错,检查了数据文件,发现其中有英文行,采用ouhuining的建议后运行通过。ouhuining的建议不错
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-23 22:44:47 | 显示全部楼层
请问end=100然后100=continue是什么意思
为什么我的出现:\1\line.f90(9) : Error: This statement label cannot be referenced in this context.   [100]

D:\1\line.f90(13) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( : % . = =>
100 contiue
这样的错误
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-8-24 08:38:23 | 显示全部楼层
苏拉苏拉 发表于 2013-8-23 22:44
请问end=100然后100=continue是什么意思
为什么我的出现:\1\line.f90(9) : Error: This statement label c ...

不是100=continue
而是  100 continue
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-24 12:09:08 | 显示全部楼层
topmad 发表于 2013-8-24 08:38
不是100=continue
而是  100 continue

手误,程序里写的是100 continue,问问题的时候写错了,我的运行不出来,编译时就出错。我想知道end在程序里面有什么用,end就end呗,还连着continue,我的fortran书里没写这种的,找不到,不理解,好忧伤,您不要嘲笑我。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-24 15:01:43 | 显示全部楼层
苏拉苏拉 发表于 2013-8-24 12:09
手误,程序里写的是100 continue,问问题的时候写错了,我的运行不出来,编译时就出错。我想知道end在程序 ...

那应该是77的语言了,不过有时候还是蛮好用的。
斗胆改一下topmad的程序,这样就去掉了continue、end和行号,但是这样做不知道会不会影响运算速度。
implicit none
real line
integer i,j,it
i=0  !清风提醒,特加此行
open(10,file='topmad.txt',status='old')
do j=1,99999999 !设置一个你认为足够大的数
read(10,*,iostat=it) line
if(it<0) exit
i=i+1
enddo
print*,i !如果你确定数据中没有空白行,那么可以取消计数器,在exit那个if之前print j就可以了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-24 16:48:47 | 显示全部楼层
lqouc 发表于 2013-8-24 15:01
那应该是77的语言了,不过有时候还是蛮好用的。
斗胆改一下topmad的程序,这样就去掉了continue、end和行 ...

我用的是90的语言,难怪看到100和continue那么别扭呢.
按照你的方法已经运行出来了,挺快,两万行的数据1秒左右就能读出行数。
我的数据里没有空白行,很整齐,后来试试你说的去掉计数器,不行的,它不会停,j会一直运行到99999(我设的是do j=1,99999),然后就出结果100000.
谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-8-24 19:37:43 | 显示全部楼层
lqouc 发表于 2013-8-24 15:01
那应该是77的语言了,不过有时候还是蛮好用的。
斗胆改一下topmad的程序,这样就去掉了continue、end和行 ...

兄弟说话客气了  相互学习  

我那个是在90里面写的代码 一直在用 没有出现过问题 不知道苏拉遇到什么问题
我再去想想
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-8-24 19:38:22 | 显示全部楼层
苏拉苏拉 发表于 2013-8-24 16:48
我用的是90的语言,难怪看到100和continue那么别扭呢.
按照你的方法已经运行出来了,挺快,两万行的数据 ...

为了解决你这个问题 能不能把你这个文档共享出来 我看一下哪里出了问题

是文档结构的问题还是程序本身的问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-8-24 20:28:05 | 显示全部楼层
topmad 发表于 2013-8-24 19:38
为了解决你这个问题 能不能把你这个文档共享出来 我看一下哪里出了问题

是文档结构的问题还是程序本身 ...

我用lqouc的程序运行出来了,你的程序在我的fortran里编译时出错,如果不是语言版本的问题,我就更不明白为什么不行了。文件附上。

SURF_CLI_CHN_MUL_DAY-50136.TXT

1.06 MB, 下载次数: 41, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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