爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: Lilyliu_love

[求助] 关于fortran读入文件问题

[复制链接]

新浪微博达人勋

发表于 2018-9-20 15:53:11 | 显示全部楼层

回帖奖励 +2 金钱

你好,我有一个问题就是我要把ccmp风场数据转化为十进制的但是我只是读取一个月的数据,应该怎么写fortran程序
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-20 15:58:00 | 显示全部楼层
气象初学者123 发表于 2018-9-20 15:53
你好,我有一个问题就是我要把ccmp风场数据转化为十进制的但是我只是读取一个月的数据,应该怎么写fortran ...

我有一个程序,但是我不知道怎么改?      
PROGRAM main
          IMPLICIT NONE
      INTEGER,parameter::m=261,n=121
          !m为经向格点数
          REAL,DIMENSION(24)::U(M,N),v(m,n)
          real::hour,f_min,f_miao
          INTEGER::I,J,L,K,z,IREC,STAT,year,month,date,all_date,n_hour
          CHARACTER(LEN=20)::FILENAME,f_time
          OPEN(10,FILE='result.dat',form='formatted')
          OPEN(20,FILE='result_2.dat',form='unformatted',access='direct',recl=m*n)
          IREC=0
          DO year=2011,2011
             DO month=12,12
          if(month==1.or.month==3.or.month==5.or.month==7.or.month==8.or.month==10.or.month==12)then
                     all_date=31
                  elseif(month==2)then
                     if(mod(year,4)==0)then
                           all_date=29
                         else
                           all_date=28
                         endif
                  else
                     all_date=30
                  endif
                  DO date=1,all_date
            WRITE(UNIT=FILENAME,FMT="(I8,'.dat')")10000*year+100*month+date
                        PRINT*,"正在操作文件:",FILENAME
                        PRINT*,"等哈哈儿啊,坐嘛:-)"
                        open(30,file=FILENAME,form='unformatted',access='direct',recl=m*n)
                        do 200 n_hour=1,4
                        hour=(n_hour-1)*6.
            F_time(1:1)=char(mod(int(hour/10),10)+48)
            F_time(2:2)=char(mod(int(hour),10)+48)
            f_min=(hour-int(hour))*60
            f_miao=(f_min-int(f_min))*60
            F_time(3:3)=char(mod(int(f_min/10),10)+48)
            F_time(4:4)=char(mod(int(f_min),10)+48)
            F_time(5:5)=char(mod(int(f_miao/10),10)+48)
            F_time(6:6)=char(mod(int(f_miao),10)+48)

               read(30,rec=2*n_hour-1)U !((u(i,j),j=1,n),i=1,m)
               read(30,rec=2*n_hour)v
                           write(10,'(i8," ",a6)')10000*year+100*month+date,F_time(1:6)
               do j=1,n
                  write(10,'(<m>f11.3)')  (u(i,j),i=1,m)
               enddo
                           do j=1,n
                              write(10,'(<m>f11.3)')  (v(i,j),i=1,m)
               enddo

                           WRITE(20,REC=2*IREC+1)U
               WRITE(20,REC=2*IREC+2)v
               irec=irec+1
200         continue
100         close(30)
!            PRINT*,"文件矩阵数:",IREC-1
            PRINT*,"哈哈,小子,该读下一个文件了^_^"
            PRINT*," "
                 ENDDO
          ENDDO
          enddo
      PRINT*," "
          PRINT*,"没了???日! "
      CLOSE(10)
          CLOSE(20)
      PRINT*,"哈哈,搞定了,^_^"
!          PRINT*,'总数:',IREC
          END PROGRAM
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-10-12 13:59:24 | 显示全部楼层

回帖奖励 +2 金钱

挺好的,加油
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-10-12 15:47:25 | 显示全部楼层

回帖奖励 +2 金钱

{:5_231:}{:5_231:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-12-29 16:28:27 | 显示全部楼层

回帖奖励 +2 金钱

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

使用道具 举报

新浪微博达人勋

发表于 2020-2-19 22:42:23 | 显示全部楼层
{:5_275:}{:5_275:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-12 00:09:07 | 显示全部楼层
我之前用了一个笨办法,一个read语句读一行,如果我从第10行开始读至20行,用
do i=1,10
read(55,*)
enddo
read(55,*) a
前面的do循环空读10行后,do循环外的read将第11行数据读入a中,而前面空读的10行不占空间
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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