📄 mfm_timeex.f
字号:
!\begin{verbatim}!===============================================================================! MF_Time F90 Unit Tests and Examples!=============================================================================== program main use MFM_TimeMgmt implicit none integer, parameter :: START_DAYS=5, START_SECS=43200 integer, parameter :: STOP_DAYS=12, STOP_SECS=1200 integer, parameter :: DAY_INC=2, SEC_INC=1000 integer, parameter :: SEC_OVER_SID=100000 integer :: rc integer :: retDays, retSecs logical :: test, isLater real(8) :: retRealDays character(60) :: str type(MFM_Time) :: startTime, stopTime, retTime print *, "==================================================" print *, "MFM_TimeMgr F90 Unit Tests and Examples" print *, "==================================================" startTime = MFM_TimeInit(START_DAYS, START_SECS) stopTime = MFM_TimeInit(STOP_DAYS, STOP_SECS) retTime = MFM_TimeInit() call MFM_TimeGet(startTime, retDays, retSecs) print *, "Ret days ", retDays, " Ret secs ", retSecs test = ((retDays == START_DAYS) .AND. (retSecs == START_SECS)) str = "MFM_TimeInit, MFM_TimeGet: init time and get attr" call MFM_ErrorTest(test, str) retRealDays = MFM_TimeGetDays(startTime) print *, "Ret real days ", retRealDays test = (abs(retRealDays - 5.5) < epsilon(5.5) ) str = "MFM_TimeGetDays: get time value as real days" call MFM_ErrorTest(test, str) retTime = MFM_TimeIncrement(startTime, DAY_INC, SEC_INC) call MFM_TimeGet(retTime, retDays, retSecs) print *, "Ret days ", retDays, " Ret secs ", retSecs test = ((retDays == 7) .AND. (retSecs == 44200)) str = "MFM_TimeIncrement: increment time, sec inc < 86400" call MFM_ErrorTest(test, str) call MFM_TimeDiff(startTime, stopTime, retTime, isLater) call MFM_TimeGet(retTime, retDays, retSecs) print *, "Ret days ", retDays, " Ret secs ", retSecs test = ((retDays == 6) .AND. (retSecs == 44400) .AND. & (isLater)) str = "MFM_TimeDiff: take time difference, isLater is true" call MFM_ErrorTest(test, str) call MFM_TimeDiff(stopTime, startTime, retTime, isLater) call MFM_TimeGet(retTime, retDays, retSecs) print *, "Ret days ", retDays, " Ret secs ", retSecs test = ((retDays == 6) .AND. (retSecs == 44400) .AND. & (.NOT. isLater)) str = "MFM_TimeDiff: take time difference, isLater is false" call MFM_ErrorTest(test, str) call MFM_TimeSet(retTime, DAY_INC, SEC_OVER_SID) call MFM_TimeGet(retTime, retDays, retSecs) print *, "Ret days ", retDays, " Ret secs ", retSecs test = ((retDays == 3) .AND. (retSecs == 13600)) str = "MFM_TimeSet: set time, sec > 86400" call MFM_ErrorTest(test, str) retTime = MFM_TimeDecrement(stopTime, DAY_INC, & SEC_OVER_SID) call MFM_TimeGet(retTime, retDays, retSecs) print *, "Ret days ", retDays, " Ret secs ", retSecs test = ((retDays == 8) .AND. (retSecs == 74000)) str = "MFM_TimeDecrement: decrement time, sec > 86400" call MFM_ErrorTest(test, str) call MFM_TimeSet(retTime, 0, 3600) retTime = MFM_TimeDecrement(retTime, 0, 3600) call MFM_TimeGet(retTime, retDays, retSecs) print *, "Ret days ", retDays, " Ret secs ", retSecs test = ((retDays == 0) .AND. (retSecs == 0)) str = "MFM_TimeDecrement: decrement time down to 0" call MFM_ErrorTest(test, str)! print *, "Test Error Handler:"! call MFM_ErrHandlerSetType(MFM_ERR_RETURN)! call MFM_TimeSet(retTime, -2, SEC_OVER_SID, rc)! call MFM_ErrPrint(rc)! print *, "Test Error Handler:"! call MFM_ErrHandlerSetType(MFM_ERR_EXIT)! call MFM_TimeSet(retTime, -2, SEC_OVER_SID, rc)! call MFM_ErrPrint(rc) print *, "Test Print Method:" call MFM_TimePrint(startTime) end program main ! \end{verbatim}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -