- 积分
- 1501
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-8-6
- 最后登录
- 1970-1-1
|
Fortran
系统平台: |
CVF6.6 |
问题概况: |
一个将MICAPS数据第一类格式改为litter_r格式的程序,Compile和build时没错,运行时出错了 |
问题截图: |
- |
我看过提问的智慧: |
看过 |
自己思考时长(天): |
15 |
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
PROGRAM MAIN
IMPLICIT NONE
CHARACTER*40:: bj_date,UTC_date
CHARACTER*40:: date_char,UTC_date_char
CHARACTER*40:: cTemp
CHARACTER*80:: plot_path
CHARACTER*40:: stat_name='aaa'
CHARACTER*80:: plat_form='FM-12 SYNOP'
CHARACTER*80:: source='MICAPS'
INTEGER i,k,qc
INTEGER:: m=1
INTEGER yr,mon,date,hr,stat_num
INTEGER,ALLOCATABLE:: stat_id(:),stat_class(:)
REAL,ALLOCATABLE:: stat_elev(:),pre(:),temp(:),longi(:),lati(:),dew(:),win_dir(:),V(:)
REAL,ALLOCATABLE:: a1(:),a2(:),a3(:),a4(:),a5(:),a6(:),a7(:),a8(:),a9(:),a10(:),a11(:),&
a12(:),a13(:),a14(:),a15(:),a16(:)
REAL a(13) !用于缺省值赋值(-888888.)
INTEGER b(13) !用于缺省值赋值(0)
LOGICAL is_sound,bogus,discard
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
bj_date='13080102' !beijing time
UTC_date='13073118' !UTC
plot_path='G:/data/8yue/surface/plot/' !PATH
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
qc=0
is_sound=.true.
bogus=.false.
discard=.false.
date_char='20'//trim(adjustl(bj_date))//'0000'
UTC_date_char='20'//trim(adjustl(UTC_date))//'0000'
a=-888888. !对整个数组赋值
b=0 !对整个数组赋值
OPEN (101,FILE=trim(plot_path)//trim(adjustl(bj_date))//'.000')
READ(101,*) !空读一行
READ(101,*) yr,mon,date,hr,stat_num
CLOSE(101)
ALLOCATE (stat_id(stat_num))
ALLOCATE (longi(stat_num))
ALLOCATE (lati(stat_num))
ALLOCATE (stat_elev(stat_num))
ALLOCATE (stat_class(stat_num))
ALLOCATE (pre(stat_num))
ALLOCATE (temp(stat_num))
ALLOCATE (dew(stat_num))
ALLOCATE (win_dir(stat_num))
ALLOCATE (V(stat_num))
ALLOCATE (a1(stat_num))
ALLOCATE (a1(stat_num))
ALLOCATE (a2(stat_num))
ALLOCATE (a3(stat_num))
ALLOCATE (a4(stat_num))
ALLOCATE (a5(stat_num))
ALLOCATE (a6(stat_num))
ALLOCATE (a7(stat_num))
ALLOCATE (a8(stat_num))
ALLOCATE (a9(stat_num))
ALLOCATE (a10(stat_num))
ALLOCATE (a11(stat_num))
ALLOCATE (a12(stat_num))
ALLOCATE (a13(stat_num))
ALLOCATE (a14(stat_num))
ALLOCATE (a15(stat_num))
ALLOCATE (a16(stat_num))
OPEN(101,FILE=trim(plot_path)//trim(adjustl(bj_date))//'.000') !打开需要改写的micaps文件
READ(101,*)
READ(101,*)
DO i=1,stat_num
READ(101,*) stat_id(i),longi(i),lati(i),stat_elev(i),stat_class(i),a1(i),win_dir(i),V(i),pre(i),&
a2(i),a3(i),a4(i),a5(i),a6(i),a7(i),a8(i),dew(i),a9(i),a10(i),temp(i),a11(i),a12(i),a13(i),&
a14(i),a15(i),a16(i) !从文件中读值给变量
ENDDO
CLOSE(101)
OPEN(102,FILE='obs.20'//trim(adjustl(UTC_date)),ACCESS='append')
DO i=1,stat_num
write(cTemp,"(I5)") stat_id(i) !整型变量变为字符型
WRITE(102,"(2f20.5,4A40,f20.5,5I10,3L10,2I10,A20,13(f13.5,I7))") lati(i),longi(i),stat_id(i),&
stat_name,plat_form,source,stat_elev(i),m,-888888,-888888,-888888,&
-888888,is_sound,bogus,discard,-888888,-888888,trim(UTC_date_char),&
-888888.,0,((a(k),b(k)),k=1,12) !将头文件变量写入.obs文件
IF(pre(i)==9999) pre(i)=-888888.
IF(temp(i)==9999) temp(i)=-888888.
IF(dew(i)==9999) dew(i)=-888888.
IF(win_dir(i)==9999) win_dir(i)=-888888.
IF(V(i)==9999) V(i)=-888888.
WRITE(102,'(10(F13.5,I7))') pre(i)*100,qc,stat_elev(i),qc,(temp(i)+273.16),qc,(dew(i)+273.16),qc,&
win_dir(i),qc,V(i),qc,((a(k),b(k)),k=1,4) !将data record部分写入.obs文件
WRITE(102,'(10(F13.5,I7))') -777777.,0,-777777.,0,((a(k),b(k)),k=1,8) !end data record
WRITE(102,*) 50,0,0 !end report record.第一个值为有效场个数,怎么得到的?
ENDDO
CLOSE(102)
DEALLOCATE(stat_id)
DEALLOCATE(longi)
DEALLOCATE(lati)
DEALLOCATE(stat_elev)
DEALLOCATE(stat_class)
DEALLOCATE(pre)
DEALLOCATE(temp)
DEALLOCATE(dew)
DEALLOCATE(win_dir)
DEALLOCATE(V)
DEALLOCATE(a1)
DEALLOCATE(a2)
DEALLOCATE(a3)
DEALLOCATE(a4)
DEALLOCATE(a5)
DEALLOCATE(a6)
DEALLOCATE(a7)
DEALLOCATE(a8)
DEALLOCATE(a9)
DEALLOCATE(a10)
DEALLOCATE(a11)
DEALLOCATE(a12)
DEALLOCATE(a13)
DEALLOCATE(a14)
DEALLOCATE(a15)
DEALLOCATE(a16)
END
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
请问各位大神问题出在哪啊,多谢~~
|
|