Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | testType | |||
integer(kind=ESMF_KIND_I8), | intent(inout) | :: | YYl | |||
integer, | intent(inout) | :: | MM | |||
integer, | intent(inout) | :: | DD | |||
integer(kind=ESMF_KIND_I8), | intent(inout) | :: | Dl | |||
type(ESMF_Calendar), | intent(inout) | :: | cal |
subroutine ESMF_RunTestBackwards(testType, YYl, MM, DD, Dl, cal) ! !ARGUMENTS: integer, intent(in) :: testType integer(ESMF_KIND_I8), intent(inout) :: YYl integer, intent(inout) :: MM integer, intent(inout) :: DD integer(ESMF_KIND_I8), intent(inout) :: Dl type(ESMF_Calendar), intent(inout) :: cal ! !DESCRIPTION: ! Goes backwards one day at a time until the calendar conversion ! algorithm breaks. ! !EOPI logical :: broken broken = .false. do while (.not.broken) ! calculate what previous Julian Day number should be Dl = Dl - 1 ! calculate what the previous date in given calendar should be DD = DD - 1 if (DD.eq.0) then MM = MM - 1 if (MM.eq.0) then MM = 12 YYl = YYl - 1 end if DD = DaysPerMonth(MM) ! check if leap year if (MM.eq.2) then if (ESMF_IsLeapYear(YYl, cal)) then DD = 29 end if end if end if ! check calculated dates against ESMF dates broken = ESMF_CheckTime(testType, YYl, MM, DD, Dl, cal, rc) end do end subroutine ESMF_RunTestBackwards