Module datedef Type datetime integer :: y,m,d,h End Type datetime Contains function set_date(y,m,d,h) integer :: y,m,d,h Type (datetime) :: set_date set_date%y=y set_date%m=m set_date%d=d set_date%h=h End function set_date !--not completed function validate_date(date) integer :: validate_date Type (datetime) :: date validate_date=1 end function validate_date function days_of_month(y,m) integer :: days_of_month,y,m Select case (m) case (1,3,5,7,8,10,12) days_of_month=31 case (2) if ( ((mod(y,4)==0).and.(mod(y,100)/=0)).or.(mod(y,400)==0) ) then days_of_month = 29 else days_of_month=28 endif case default days_of_month=30 End Select end function days_of_month ! Note: hrs < 24 subroutine add_hrs(date,hrs) Type(datetime) :: date integer :: hrs,dom date%h = date%h + hrs if (date%h >= 24) then date%h = date%h - 24 date%d = date%d + 1 dom = days_of_month(date%y,date%m) if (date%d>dom) then date%d = 1 date%m = date%m + 1 if (date%m > 12) then date%m = 1 date%y = date%y + 1 endif endif endif end subroutine add_hrs ! Return -1, date1date2 function date_comp(date1,date2) Type (datetime) :: date1, date2 integer :: date_comp, temp1, temp2 temp1=365*24*date1%y + 30*24*date1%m + 24*date1%d+date1%h temp2=365*24*date2%y + 30*24*date2%m + 24*date2%d+date2%h if (temp1