- 积分
- 19
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-8-8
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我正在做一个micaps第一类数据转第三类数据的程序,大块基本完成。现在要做实时调用数据的部分,每三小时调用文件一次,03-06调用02时的文件,06-09调用05时的文件,以此类推。
我现在只是先用一个文件做的,文件名:2012073014,不知道怎么调用不同文件名的数据(2012080802,2012080805。。。。2012083002。。。。。),想请教一下,多谢~·
程序1如下:
!=======================================================================
PROGRAM MAIN1
IMPLICIT NONE
!-----------------------------------------------------------------------
integer::YEAR,MONTH,DAY,TIME !年月日录入
!INTEGER,PARAMETER::JS=10000
INTEGER::NUMBER,I
INTEGER,ALLOCATABLE::NUM(:),HD(:) !站点数,海拔
REAL,ALLOCATABLE::LON(:),LAT(:),T(:),TD(:),TC(:),P(:),Q(:) !经度、纬度、温度、露点、存放不规则的变量数组
INTEGER TEMP
!-----------------------------------------------------------------------
OPEN(12,FILE='D:\wx\12073014.000') !打开原始数据文件
OPEN (13,FILE='D:\wx\SC.TXT',STATUS='UNKNOWN',form='formatted') !用来存放第三类数据的文件
READ (12,*)
READ (12,'(I2,3i3,I7)') YEAR,MONTH,DAY,TIME,NUMBER !CS 站点数
PRINT*,NUMBER
WRITE (13,'(A,I2,A,I2,A,I2,A,I2,A)') "diamond 3",YEAR,"年",MONTH,"月",DAY,"日" ,TIME,"时温度露点差" !题头
WRITE (13,'(4I3,A)') YEAR,MONTH,DAY,TIME," -3"
WRITE (13,'(A)') " 0"
WRITE (13,'(A)') " 1 25 0"
WRITE (13,'(A,I10)') " 1",NUMBER !题头五行
!-----------------------------------------------------------------------
ALLOCATE(NUM(NUMBER))
ALLOCATE(HD(NUMBER))
ALLOCATE(LON(NUMBER))
ALLOCATE(LAT(NUMBER))
ALLOCATE(T(NUMBER))
ALLOCATE(TD(NUMBER))
ALLOCATE(TC(NUMBER))
ALLOCATE(P(NUMBER))
ALLOCATE(Q(NUMBER)) !给数组分配内存空间
!-----------------------------------------------------------------------------------------------------------------------------
DO I=1,NUMBER
READ (12,'(I5,2F8.2,I5,8I5)') NUM(I),LON(I),LAT(I),HD(I),TEMP,TEMP,TEMP,TEMP,TEMP,TEMP,TEMP,TEMP
READ (12,'(F7.1,3I5,F7.1,F7.1,I5,F7.1,6I5)') Q(I),TEMP,TEMP,TEMP,TD(I),P(I),TEMP,T(I),TEMP,TEMP,TEMP,TEMP,TEMP,TEMP
END DO !读入原始资料数据,两行是一个站点资料
DO I=1,NUMBER
IF(T(I)==999.9000.OR.TD(I)==999.9000)THEN
TC(I)=9999
ELSE
TC(I)=T(I)-TD(I)
END IF !判断温度露点是否有缺省值
END DO
!-----------------------------------------------------------------------
DO I=1,NUMBER
WRITE (13,'(I5,2F8.2,I5,F7.1)') NUM(I),LON(I),LAT(I),HD(I),TC(I) !将数据读入sc.txt
END DO
CLOSE(12)
CLOSE(13)
END PROGRAM
!-----------------------------------------------------------------------
请高手指教,我是菜鸟,现学现写的程序,希望回答能写细点,能给段通用程序最好啦~~
我还有做另外一个程序,要求和上面一样,但是每列的数据格式不一样,不是列数不同,是同一列每行的数据格式都不一样,比如9999,可能突然变成0.1,下面又出现103.223,若控制输出按较大的f8.1就会读错数据,这种情况能利用空格来读入数据吗?可以的话能写的详细点吗?
以上两个数据文件挂到附件了,“.000”是程序1调用的文件
“.aws.txt”是格式乱的那个文件(后缀应该就是点.txt)
传不上去,我摘一部分放下面 |
|