program colddate !********************************************************************** ! * . . . ! * PROGRAM: colddate ! * PRGMMR: M. ZUPANSKI ORG: CIRA/CSU DATE: 2003-09-16 ! * ! * ABSTRACT: GIVEN THE FCST LENGTH (COLD), AND CYCLE START DATE, ! * CALCULATE THE STARTING DATE OF THE COLD FORECAST ! * ! * PROGRAM LOG: ! * ! * 08/18/2003 ..... M. ZUPANSKI: ! * ! ********************************************************************** character*13 jdate character*13 outdate character*14 cycle_start_date character*14 cycle_date integer :: cycle_interval,N_cycles integer :: fcst_length integer :: diff integer :: year,jday,hour integer :: outyear,outjday,outhour ! ! DECLARE NAMELIST ! NAMELIST /CYCLE/ cycle_start_date,cycle_interval,N_cycles NAMELIST /LENGTH/ fcst_length !=========================================================== 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) write(*,*) "read fcst length" iparm=152 CLOSE(iparm) OPEN(UNIT=iparm,FILE='fcst_length.cold',FORM='FORMATTED',IOSTAT=IER) IF(IER.NE.0)WRITE(*,*) iparm,' OPEN UNIT ERROR IER=',IER READ(iparm,LENGTH) !----- define appropriate jdate call rdate_to_jdate (cycle_start_date,jdate,year,jday,hour) !----- diff (sec), fcst_length (min) diff=-fcst_length*60 !----- add the increment call add_to_jdate (year,jday,hour,diff,outyear,outjday,outhour) call jdate_make_big (outyear,outjday,outhour,outdate) !----- define output cycle_date call jdate_to_rdate (outdate,cycle_date) !----- write out updated 'obs.parm' namelist file write(*,*) "CYCLE=",cycle_date iparm=51 CLOSE(iparm) OPEN(UNIT=iparm,FILE='cycle_date',FORM='FORMATTED',IOSTAT=IER) IF(IER.NE.0)WRITE(*,*) iparm,' OPEN UNIT ERROR IER=',IER WRITE(iparm,100) cycle_date 100 format(a14) ! CLOSE(UNIT=iparm,STATUS='KEEP') stop end