User defined function "mod".
49
53 & operator(==), operator(<), operator(>), operator(<=), operator(>=), &
54 & operator(+), operator(-), operator(*), operator(/), &
56 implicit none
57 type(DC_DIFFTIME):: result
58 type(DC_DIFFTIME), intent(in):: diff1, diff2
59 type(DC_SCALED_SEC):: sec1, sec2
60 type(DC_SCALED_SEC):: zero_sec
61continue
62 result % day_seconds = diff1 % day_seconds
63 if (diff1 % day == zero_sec .and. diff2 % day == zero_sec .and. &
64 & diff1 % sec == zero_sec .and. diff2 % sec == zero_sec) then
65 result % mon = modscl(diff1 % mon, diff2 % mon)
66 result % day = zero_sec
67 result % sec = zero_sec
68 else if (diff1 % sec == zero_sec .and. diff2 % sec == zero_sec) then
69 result % mon = zero_sec
70 result % day = modscl((
cyclic_mdays * diff1 % mon + diff1 % day), &
72 result % sec = zero_sec
73 else
74 sec1 = diff1 % day_seconds * (
cyclic_mdays * diff1 % mon + diff1 % day) &
75 & + diff1 % sec
76 sec2 = diff2 % day_seconds * (
cyclic_mdays * diff2 % mon + diff2 % day) &
77 & + diff2 % sec
78 result % sec = modscl(sec1, sec2)
79 result % day = zero_sec
80 result % mon = zero_sec
81 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
82 endif
Internal module for dc_date.
subroutine, public dcdate_normalize(day, sec, day_seconds, nondim_flag)
subroutine, public dcdate_nondimcheck(opr, diff1, diff2, rslt)
Derived types and parameters for date and time.
real(dp), parameter, public cyclic_mdays
Days per month for cyclic calendar (also used for DC_DIFFTIME)
Scaled seconds module for precise time operations.