- 积分
 - 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  
 
 
 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
请问各位大神问题出在哪啊,多谢~~ 
 |   
 
 
 
 |