;******************************************************************************** ;This subroutine will increment forward (flag=1) or backward (flag=-1) the day ;month and year. Inputs are long words ;******************************************************************************* pro dtgincre_day, day, mnum, yy, flag ;********************************************************** ;Check if the year is a leap year ;********************************************************** leap_flag=0 ;not a leap year check4=(yy) mod 4 check100=(yy) mod 100 check400=(yy)mod 400 if ( (check4 eq 0 and check100 ne 0) or (check400 eq 0) ) then leap_flag=1 ;leap yea if (flag gt 0) then begin day=day+1 hr=0 if (day eq 30 and mnum eq 2 and leap_flag eq 1) then begin mnum=mnum+1 day=1 endif if (day eq 29 and mnum eq 2 and leap_flag eq 0) then begin mnum=mnum+1 day=1 endif if (day ge 31) then begin if (mnum eq 9 or mnum eq 4 or mnum eq 6 or mnum eq 11) then begin mnum=mnum+1 day=1 endif else begin if (day eq 32) then begin mnum=mnum+1 day=1 if (mnum eq 13) then begin mnum=1 yy=yy+1 endif endif endelse endif endif else begin day=day-1 if (day eq 0) then begin mnum=mnum-1 if (mnum eq 0) then begin mnum=12 yy=yy-1 endif if (mnum eq 2 and leap_flag eq 1) then day=29 if (mnum eq 2 and leap_flag eq 0) then day=28 if (mnum eq 9 or mnum eq 4 or mnum eq 6 or mnum eq 11) then begin day=30 endif else begin if (mnum ne 2) then day=31 endelse endif endelse end