program add_cycle_interval !********************************************************************** ! * . . . ! * PROGRAM: add_cycle_interval ! * PRGMMR: M. ZUPANSKI ORG: CIRA/CSU DATE: 2003-08-18 ! * ! * ABSTRACT: GIVEN CYCLE_DATE AND CYCLE_INTERVAL, ! * CALCULATE THE DATE (AT THE END OF ASSIMILATION INTERVAL) ! * ! * PROGRAM LOG: ! * ! * 08/18/2003 ..... M. ZUPANSKI: ! * 05/21/2004 ..... M. ZUPANSKI: ADD ANY CYCLE_DATE, ANY INTERVAL ! * ! ********************************************************************** character*13 jdate character*13 outdate character*14 cycle_start_date character*14 cycle_date character*14 cycle_date_out integer :: cycle_interval,N_cycles integer :: diff integer :: year,jday,hour integer :: outyear,outjday,outhour ! ! DECLARE NAMELIST ! NAMELIST /CYCLE/ cycle_start_date,cycle_interval,N_cycles !=========================================================== write(*,*) "read cycle.parm" iparm=151 CLOSE(iparm) OPEN(UNIT=iparm,FILE='cycle.parm',FORM='FORMATTED',IOSTAT=IER) IF(IER.NE.0)WRITE(*,*) iparm,' OPEN UNIT ERROR IER=',IER READ(iparm,CYCLE) iparm=152 CLOSE(iparm) OPEN(UNIT=iparm,FILE='cycle_date',FORM='FORMATTED',IOSTAT=IER) IF(IER.NE.0)WRITE(*,*) iparm,' OPEN UNIT ERROR IER=',IER READ(iparm,100) cycle_date 100 format(a14) ! CLOSE(UNIT=iparm,STATUS='KEEP') write(*,*) "CYCLE IN=",cycle_date !----- define appropriate jdate call rdate_to_jdate (cycle_date,jdate,year,jday,hour) write(*,*) "OUT: jdate,year,jday,hour=",jdate,year,jday,hour !----- diff (sec), cycle_interval (min) write(*,*) "cycle_interval=",cycle_interval," icycle=",icycle diff=cycle_interval*60 write(*,*) "diff=",diff !----- add the increment call add_to_jdate (year,jday,hour,diff,outyear,outjday,outhour) write(*,*) "outyear,outjday,outhour=",outyear,outjday,outhour call jdate_make_big (outyear,outjday,outhour,outdate) write(*,*) "outdate=",outdate !----- define output cycle_date call jdate_to_rdate (outdate,cycle_date_out) write(*,*) "cycle_date_out=",cycle_date_out !----- write out updated 'obs.parm' namelist file write(*,*) "CYCLE OUT=",cycle_date_out iparm=51 CLOSE(iparm) OPEN(UNIT=iparm,FILE='cycle_date_out',FORM='FORMATTED',IOSTAT=IER) IF(IER.NE.0)WRITE(*,*) iparm,' OPEN UNIT ERROR IER=',IER WRITE(iparm,100) cycle_date_out CLOSE(UNIT=iparm,STATUS='KEEP') stop end