c======================================================================================== c c NAME: julian69_to_date c c PURPOSE: Computes the year, month and day given the a julian date that starts on 1/1/69. c c INPUTS: c outtype 1 = returns day of year, 2 = returns month and day c julian69 julian day starting from 1/1/69 c c OUTPUTS: c year 4 digit year c month month number; 1 if outtype = 1 c iday day of month; day of year if outtype = 1 c c HISTORY: Darren Jackson CIRES/ETL April 2002 c c========================================================================================= subroutine julian69_to_date(outtype,julian69,year,month,iday) implicit none INTEGER outtype,julian69,year,month,iday INTEGER yeardif,totdays,leapdays,jday INTEGER leap,cdaytot,imon INTEGER cday0(13),cday1(13) DATA cday0/0,31,59,90,120,151,181,212,243,273,304,334,365/ DATA cday1/0,31,60,91,121,152,182,213,244,274,305,335,366/ jday = 0 year = 1968 do while (jday .lt. julian69) year = year + 1 if(( mod(year,4) .eq. 0 .and. mod(year,100) .ne. 0) .or. . mod(year,400) .eq. 0) then leap=1 jday = jday + 366 else leap=0 jday = jday + 365 endif enddo yeardif = year - 1969 totdays = yeardif * 365 leapdays = yeardif/4 totdays = totdays + leapdays jday = julian69 - totdays if(outtype .eq. 1) then month = 1 iday = jday else imon = 2 cdaytot = 0 do while (imon .le. 13) if(leap .eq. 1) then cdaytot = cday1(imon) else cdaytot = cday0(imon) endif if(cdaytot .ge. jday) then month = imon - 1 if(leap .eq. 1) then iday = jday - cday1(month) else iday = jday - cday0(month) endif goto 90 endif imon = imon + 1 enddo endif 90 continue return end