! call j1980mdy(j1980date,mo,iday,iyear) !convert daycount (1980 to..) ! returns month=(1-12) day of month, and year. ! j1980date is # days from 1 1 1980 (1 1 1980 is returned for date=1) subroutine j1980mdy(nday,mon,day,iy) implicit none integer*4 i,nday,mon,day,iy,nn integer,save:: monlen(11) data monlen/31,28,31,30,31,30,31,31,30,31,30/ day=nday !safe to modify returned da of mo iy=1980 !year 0 in this system do while (day.gt.0) !find year nn=365 !not a leap if(mod(iy,4).eq.0) nn=366 !leap year if(mod(iy,100).eq.0) nn=365 !not leap year (2100) if(mod(iy,400).eq.0) nn=366 !leap year (2000) if(day.gt.nn)then iy=iy+1 !not done yet, add a year day=day-nn !account for days in year just added else goto 123 endif enddo 123 monlen(2)=28 if(mod(iy,4).eq.0) monlen(2)=29 !leap year if(mod(iy,100).eq.0) monlen(2)=28 !not leap year (2100) if(mod(iy,400).eq.0) monlen(2)=29 !leap year (2000) mon=1 !init january ! do i=1,11 !find month and day if(day.gt.monlen(mon)) then !another month to count day=day-monlen(i) !account for days mon=mon+1 !next month endif enddo return end