爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13807|回复: 14

[混合编程] fortran 批处理读取txt格式的数据 ,急切求救!!!!

[复制链接]

新浪微博达人勋

发表于 2011-12-2 10:18:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 云大小子 于 2011-12-2 10:23 编辑

我用来读取数据批处理的fortran程序如下
!written by asu to read pom outdata
      parameter(ix=148,iy=80,iz=1,it=1456)
real t(ix,iy,iz),u(ix,iy,iz),v(ix,iy,iz),s(ix,iy,iz)
character a1*1,a2*2,a3*3,a4*4,filename*100

  open(200,file='uvts20y.grd',form='unformatted',
     &   access='direct',recl=ix*iy)
irec=0
do iday=1,it
  
  if(iday.lt.10)then
   write(a1,'(i1)')iday
    a4='000'//a1
  elseif(iday.lt.100)then
   write(a2,'(i2)')iday
    a4='00'//a2
  elseif(iday.lt.1000)then
   write(a3,'(i3)')iday
                   a4='0'//a3
                    else
                        write(a4,'(i4)')iday
              endif
  filename='pomout0'//a4                   ( !前面这些都是在读取
(文件名  ,前面这些都没错  因为我在这加上 print*,filename 能输出一系列名称
  )                                                            
open(100,file="filename"//".txt", form='formatted',
     $ status='old')                                    
do  iii=1,2
read(100,*)
enddo

          read(100,101)t
101       format(8e12.5)
、 read(100,101)u
、 read(100,101)v
      read(100,101)s
  close(100)                      主要就是这前面一段关于打开文件,读取里面的数据感觉有问题
   write(6,*)iday
  do k=1,iz
   irec=irec+1

   write(200,rec=irec)((t(i,j,k),i=1,ix),j=1,iy)
   
   enddo
   
   do k=1,iz
    irec=irec+1

      write(200,rec=irec)((u(i,j,k),i=1,ix),j=1,iy)
   
   enddo
       do k=1,iz
     irec=irec+1

      write(200,rec=irec)((v(i,j,k),i=1,ix),j=1,iy)
    enddo
   do k=1,iz
   irec=irec+1
    write(200,rec=irec)((s(i,j,k),i=1,ix),j=1,iy)
     
   enddo

     enddo
  
   end
c        以上的程序 编译没错误,执行出项了如下的错误 1.jpg
  需要读取的txt数据里面的数据分布是下面的一个截图: 未命名.jpg
总体说一下吧 ,每一列代表一个变量,我要把一列的数据读成一个水平的148x80水平范围的grib数据。
各位有谁知道的 或者处理过的 请给小弟我指点指点 本人不胜感激!!

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-12-2 10:29:55 | 显示全部楼层
open(100 那一行改成
filename=trim(filename)//'.txt'
open(100,file=''//trim(filename)//'', form='formatted',
     $ status='old')
上面都是单引号
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-12-2 10:30:22 | 显示全部楼层
open(100 那一行改成
filename=trim(filename)//'.txt'
open(100,file=''//trim(filename)//'', form='formatted',
     $ status='old')
上面都是单引号
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-12-2 10:48:03 | 显示全部楼层
错误提示已经说明了 就是清风指出的问题 filename已经是字符型在open中就不需要在加上单引号
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-12-2 10:49:51 | 显示全部楼层

改了以后反而有错误提示,这个trim函数是能消除字符串之间的空格吧 但是好像我这个文件名输出的时候中间就没有空格
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-12-2 10:57:23 | 显示全部楼层
wlzhongouc 发表于 2011-12-2 10:48
错误提示已经说明了 就是清风指出的问题 filename已经是字符型在open中就不需要在加上单引号

2.jpg 恩我改成了open(100,file=filename, form='formatted',
     $ status='old'
并且在这前面加了个print*,filename  执行后只打印了一个文件名pomout00001这个就中断了 说明一定在open这个地方执行不下去

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

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-12-2 11:07:14 | 显示全部楼层
云大小子 发表于 2011-12-2 10:49
改了以后反而有错误提示,这个trim函数是能消除字符串之间的空格吧 但是好像我这个文件名输出的时候中间就 ...

是首尾的空格 不是中间的空格
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2011-12-2 11:12:22 | 显示全部楼层
mofangbao 发表于 2011-12-2 11:07
是首尾的空格 不是中间的空格

我改成下面那样了
filename=trim(filename)//'.txt'
open(100,file=trim(filename), form='formatted',
     $ status='old')
但是还是出现一样的问题 就像上面的截图一样
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-12-2 12:07:14 | 显示全部楼层
那你先改成固定文件名,看看还出不出错,然后输出你的filename到屏幕看看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2011-12-2 13:22:34 | 显示全部楼层
“”filename试试看
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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