Loading...
Searching...
No Matches
Functions/Subroutines
dcdatetimemod.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

type(dc_difftime) function dcdatetime_mod_ff (diff1, diff2)
 

Function/Subroutine Documentation

◆ dcdatetime_mod_ff()

type(dc_difftime) function dcdatetime_mod_ff ( type(dc_difftime), intent(in)  diff1,
type(dc_difftime), intent(in)  diff2 
)

Definition at line 10 of file dcdatetimemod.f90.

11 !
12 ! 引数 <b>diff1</b> を <b>diff2</b> で除算した際の余りを返します.
13 !
14 ! ※ 注意: 月差と日時の混在する除算は近似的結果になるおそれがあります
15 !
18 use dc_scaledsec, only: dc_scaled_sec, &
19 & operator(==), operator(<), operator(>), operator(<=), operator(>=), &
20 & operator(+), operator(-), operator(*), operator(/), &
21 & modscl => mod, modulo, int, abs, sign
22 implicit none
23 type(DC_DIFFTIME):: result
24 type(DC_DIFFTIME), intent(in):: diff1, diff2
25 type(DC_SCALED_SEC):: sec1, sec2
26 type(DC_SCALED_SEC):: zero_sec
27 continue
28 result % day_seconds = diff1 % day_seconds
29 if (diff1 % day == zero_sec .and. diff2 % day == zero_sec .and. &
30 & diff1 % sec == zero_sec .and. diff2 % sec == zero_sec) then
31 result % mon = modscl(diff1 % mon, diff2 % mon)
32 result % day = zero_sec
33 result % sec = zero_sec
34 else if (diff1 % sec == zero_sec .and. diff2 % sec == zero_sec) then
35 result % mon = zero_sec
36 result % day = modscl((cyclic_mdays * diff1 % mon + diff1 % day), &
37 & (cyclic_mdays * diff2 % mon + diff2 % day))
38 result % sec = zero_sec
39 else
40 sec1 = diff1 % day_seconds * (cyclic_mdays * diff1 % mon + diff1 % day) &
41 & + diff1 % sec
42 sec2 = diff2 % day_seconds * (cyclic_mdays * diff2 % mon + diff2 % day) &
43 & + diff2 % sec
44 result % sec = modscl(sec1, sec2)
45 result % day = zero_sec
46 result % mon = zero_sec
47 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
48 endif
49 call dcdate_nondimcheck('dc_date#mod', diff1, diff2, result)
subroutine, public dcdate_normalize(day, sec, day_seconds, nondim_flag)
subroutine, public dcdate_nondimcheck(opr, diff1, diff2, rslt)
real(dp), parameter, public cyclic_mdays

References dc_date_types::cyclic_mdays, dc_date_internal::dcdate_nondimcheck(), and dc_date_internal::dcdate_normalize().

Here is the call graph for this function: