- 积分
- 1781
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-5-22
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2017-12-20 09:58:54
|
显示全部楼层
我刚刚把程序简化了一下,能成功编译并且生成结果,但是生成的二进制grads读不出来,不知道问题在哪??求助啊
PROGRAM write_sf_obs
IMPLICIT NONE
INTEGER YEAR,MONTH,DAY,TIME
CHARACTER str1,str2,str3*40, DTIME*14
INTEGER STID
CHARACTER*8 STIDN
REAL TIM
REAL XLON,XLAT,TER,LEVEL,CLOUD,DIR,SPD,SLP,PR3H,PASS1,PASS2
REAL RN6H,LCD1,LCD2,LCD3,TD,VIS1,CRREN,T,HCD1,HCD2,F1,F2,T24,PR24H
INTEGER NLEV, FLAG
TIM=0.0
NLEV=1
FLAG=1
OPEN(40,ACTION='WRITE',FILE="surface.dat",FORM='UNFORMATTED')
OPEN(11,ACTION='READ',ERR=200,FILE="08060102.000",FORM='FORMATTED')
READ(11,*) STR1,STR2,STR3
READ(11,*) YEAR,MONTH,DAY,TIME,FLAG
DO
READ(11,*,END=142) STID,XLON,XLAT,TER,LEVEL,CLOUD,DIR,SPD,SLP,PR3H,PASS1,PASS2, &
& RN6H,LCD1,LCD2,LCD3,TD,VIS1,CRREN,T,HCD1,HCD2,F1,F2,T24,PR24H
STIDN= CHAR(STID/1000000+48) // &
& CHAR((STID-INT(STID/1000000)*1000000)/100000+48)// &
& CHAR((STID-INT(STID/100000)*100000)/10000+48)// &
& CHAR((STID-INT(STID/10000)*10000)/1000+48)// &
& CHAR((STID-INT(STID/1000)*1000)/100+48)// &
& CHAR((STID-INT(STID/100)*100)/10+48)//CHAR(STID-INT(STID/10)*10+48) // '0'
WRITE(40) STIDN,XLAT,XLON,TIM,NLEV,FLAG
WRITE(40) TER,LEVEL,CLOUD,DIR,SPD,SLP,PR3H,PASS1,PASS2,&
& RN6H,LCD1,LCD2,LCD3,TD,VIS1,CRREN,T,HCD1,HCD2,F1,F2,T24,PR24H
END DO
142 CONTINUE
CLOSE(11)
NLEV=0
WRITE(40) STIDN,XLAT,XLON,TIM,NLEV,FLAG
GOTO 201
200 WRITE(*,*) "SKIP! File not exist!"
201 CONTINUE
END
DSET g:/fortran/surface08060102.dat
dtype station
stnmap g:/fortran/surface.map
UNDEF 9999
TDEF 1 linear 01jun2008 6hr
VARS 23
TER 0 99 TER
LEVEL 0 99 LEVEL
CLOUD 0 99 CLOUD
DIR 0 99 DIR
SPD 0 99 SPD
SLP 0 99 SLP
PR3H 0 99 PR3H
PASS1 0 99 PASS1
PASS2 0 99 PASS2
RN6 0 99 RN6
LCD1 0 99 LCD1
LCD2 0 99 LCD2
LCD3 0 99 LCD3
TD 0 99 TD
VIS1 0 99 VIS1
CRREN 0 99 CRREN
T 0 99 T
HCD1 0 99 HCD1
HCD2 0 99 HCD2
F1 0 99 F1
F2 0 99 F2
T24 0 99 T24
PR24H 0 99 PR24H
ENDVARS
|
|