| 
 
	积分4198贡献 精华在线时间 小时注册时间2012-11-23最后登录1970-1-1 
 | 
 
 
 楼主|
发表于 2013-6-2 19:24:33
|
显示全部楼层 
| 本帖最后由 jeffggg 于 2013-6-2 19:29 编辑 
 lqouc 发表于 2013-6-2 18:51 第二个程序你根本就不用管,你只需要把第一个的路径写好就好了,第二个这个是个子程序,在主程序里面第二个 ...
 嗯 我把两个放到一个目录下面了  我再把第一个程序发一下 里面一些地方大神再帮我看下吧 运行的时候提示错误
 Program  Use_Scat_Daily_Example
 character(120) filename
 
 real(4) mingmt(1440,720,2)
 real(4) windspd(1440,720,2)
 real(4) winddir(1440,720,2)
 real(4) radrain(1440,720,2)
 integer(4) scatflag(1440,720,2)
 
 integer lyear,jday,imonth,idaymonth,ierr,iasc,ilat,ilon
 
 DO lyear =2000,2000        !qscat verification 2000,2000        !seawinds verification  2003,2003        !full qscat data range  1999,2004 (or current year)
 DO jday=11,11         !qscat verification        11,11                !seawinds verification  115,115                !full year  1,366
 IF(lyear.eq.1999.and.jday.lt.200)                         cycle        !before qscat in orbit 如果等于1999中的某一天 cycle之后的语句不再被执行,而是直接开始新一轮的循环
 IF(lyear.ne.4*INT(lyear/4).and.jday.eq.366)  cycle        !not a leap year 如果是闰年的某一天,cycle之后的语句不再被执行,而是直接开始新一轮的循环。
 
 CALL find_month_day(lyear,jday,imonth,idaymonth) ! 调用子函数
 
 ! Construct file name  建立文件名称
 ! ADJUST FOR YOUR DIRECTORY STRUCTURE and INSTRUMENT 调整你的目录结构!
 ! This subroutine assumes you have unzipped files with no extention 这个子程序假定你解压后的文件没有扩展
 
 WRITE(filename,9001) lyear,imonth,lyear,imonth,idaymonth
 9001                FORMAT('H:\Qscat\y',i4.4,'\m',i2.2,'\qscat_',i4.4,i2.2,i2.2,'v4')
 WRITE(*,*) filename
 
 
 CALL GET_SCAT_DAILY_V4(filename, mingmt,windspd,winddir,scatflag,radrain, IERR)
 IF (IERR.ne.0) THEN
 WRITE(*,*) 'no scat data: ', filename
 STOP
 ENDIF
 
 
 !!  write out scat verification file data for comparison 写出SCAT验证文件数据的比较
 DO iasc=1,1                !range !1,2(asc,dsc)    !seawinds and qscat verification !1,1
 DO ilat=274,278           !1,720                                                   !274,278
 DO ilon=170,175           !1,1440                                                   !170,175
 
 !                XLAT=0.25*ILAT-90.125
 !                XLON=0.25*ILON-0.125
 
 write(*,'(2i5,f6.0,2f8.2,2x,i4,f11.2)') ilon,ilat,mingmt(ilon,ilat,iasc),windspd(ilon,ilat,iasc), winddir(ilon,ilat,iasc),scatflag(ilon,ilat,iasc), radrain(ilon,ilat,iasc)
 
 ENDDO  !ilon
 ENDDO  !ilat
 ENDDO  !iasc
 
 ENDDO        !jday
 ENDDO        !lyear
 
 END
 
 !! write the location of the qscat data subroutine 写QSCAT数据子程序的位置
 !! include 'YourDrive:\YourDirectory\GET_SCAT_DAILY_v4.F'  驱动器 目录
 include 'GET_SCAT_DAILY_V4.F'   !调入函数或自定义的内容
 
 
 
 
 SUBROUTINE FIND_MONTH_DAY(LYEAR,IDAYJL, IMON,IDAY)
 
 INTEGER(4) IDAYFX(12,0:1)
 DATA IDAYFX/1,32,60,91,121,152,182,213,244,274,305,335,1,32,61,92,122,153,183,214,245,275,306,336/
 
 ILEAP=0
 IF(LYEAR.EQ.4*INT(LYEAR/4)) ILEAP=1
 
 DO 10 JMON=2,12
 IF(IDAYFX(JMON,ILEAP).GT.IDAYJL) THEN
 IMON=JMON-1
 GO TO 20
 ENDIF
 10 CONTINUE
 IMON=12
 20 CONTINUE
 
 IDAY=1+IDAYJL-IDAYFX(IMON,ILEAP)
 RETURN
 END
 | 
 |