Loading...
Searching...
No Matches
dcdatetimesub.f90
Go to the documentation of this file.
1!= 利用者定義演算子 (-) のための関数
2!= Functions for user defined operation (-)
3!
4! Authors:: Yasuhiro MORIKAWA, Eizi TOYODA
5! Version:: $Id: dcdatetimesub.f90,v 1.2 2009-05-31 11:46:03 morikawa Exp $
6! Tag Name:: $Name: $
7! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved.
8! License:: See COPYRIGHT[link:../../COPYRIGHT]
9!
10 function dcdatetime_sub_tf(time, diff) result(result)
11 !
12 ! 2 つの日時 (DC_DATETIME 型) もしくは
13 ! 日時差 (DC_DIFFTIME 型)の減算を行います.
14 !
17 use dc_scaledsec, only: dc_scaled_sec, &
18 & operator(<), operator(>), operator(<=), operator(>=), &
19 & operator(+), operator(-), operator(*), operator(/), &
20 & modulo, int, abs, sign
21 implicit none
22 type(dc_datetime):: result
23 type(dc_datetime), intent(in):: time
24 type(dc_difftime), intent(in):: diff
25 type(dc_scaled_sec):: time_year, time_mon, time_day, time_sec
26 integer:: time_caltype
27 character(6):: time_zone
28 continue
29 call eval(time, &
30 & sclyear = time_year, sclmon = time_mon, sclday = time_day, &
31 & sclsec = time_sec, caltype = time_caltype, zone = time_zone )
32 call dcdatetimecreate(result, &
33 & sclyear = time_year, &
34 & sclmon = time_mon - diff % mon, &
35 & sclday = time_day - diff % day, &
36 & sclsec = time_sec - diff % sec, &
37 & caltype = time_caltype, zone = time_zone)
38 end function dcdatetime_sub_tf
39
40 function dcdatetime_sub_tt(time1, time2) result(result)
41 use dc_date_generic, only: evalsclsec, zonetodiff, operator(-)
44 use dc_scaledsec, only: dc_scaled_sec, &
45 & operator(<), operator(>), operator(<=), operator(>=), &
46 & operator(+), operator(-), operator(*), operator(/), &
47 & modulo, int, abs, sign
48 implicit none
49 type(dc_difftime):: result
50 type(dc_datetime), intent(in):: time1, time2
51 continue
52 result % day = time1 % day - time2 % day
53 result % sec = time1 % sec - time2 % sec &
54 & + evalsclsec(zonetodiff(time1 % zone) - zonetodiff(time2 % zone))
55 result % day_seconds = time1 % day_seconds
56 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
57 end function dcdatetime_sub_tt
58
59 function dcdatetime_sub_ff(diff1, diff2) result(result)
62 use dc_scaledsec, only: operator(-)
63 implicit none
64 type(dc_difftime):: result
65 type(dc_difftime), intent(in):: diff1, diff2
66 continue
67 result % mon = diff1 % mon - diff2 % mon
68 result % day = diff1 % day - diff2 % day
69 result % sec = diff1 % sec - diff2 % sec
70 result % day_seconds = diff1 % day_seconds
71 call dcdate_nondimcheck('dc_date#operator(-)', diff1, diff2, result)
72 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
73 end function dcdatetime_sub_ff
74
75 function dcdatetime_sub_fd(diff, sec) result(result)
78 use dc_scaledsec, only: operator(-)
79 use dc_types, only: dp
80 implicit none
81 type(dc_difftime):: result
82 type(dc_difftime), intent(in):: diff
83 real(dp), intent(in):: sec
84 continue
85 result % mon = diff % mon
86 result % day = diff % day
87 result % sec = diff % sec - sec
88 result % day_seconds = diff % day_seconds
89 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
90 end function dcdatetime_sub_fd
91
92 function dcdatetime_sub_fr(diff, sec) result(result)
93 use dc_date_generic, only: operator(-)
95 use dc_scaledsec, only: operator(-)
96 use dc_types, only: dp
97 implicit none
98 type(dc_difftime):: result
99 type(dc_difftime), intent(in):: diff
100 real, intent(in):: sec
101 continue
102 result = diff - real( sec, dp )
103 end function dcdatetime_sub_fr
104
105 function dcdatetime_sub_fi(diff, sec) result(result)
106 use dc_date_generic, only: operator(-)
108 use dc_scaledsec, only: operator(-)
109 use dc_types, only: dp
110 implicit none
111 type(dc_difftime):: result
112 type(dc_difftime), intent(in):: diff
113 integer, intent(in):: sec
114 continue
115 result = diff - real( sec, dp )
116 end function dcdatetime_sub_fi
type(dc_difftime) function dcdatetime_sub_fd(diff, sec)
type(dc_datetime) function dcdatetime_sub_tf(time, diff)
type(dc_difftime) function dcdatetime_sub_ff(diff1, diff2)
type(dc_difftime) function dcdatetime_sub_fi(diff, sec)
type(dc_difftime) function dcdatetime_sub_fr(diff, sec)
type(dc_difftime) function dcdatetime_sub_tt(time1, time2)
subroutine, public dcdate_normalize(day, sec, day_seconds, nondim_flag)
subroutine, public dcdate_nondimcheck(opr, diff1, diff2, rslt)
integer, save, public caltype
Provides kind type parameter values.
Definition dc_types.f90:49
integer, parameter, public dp
Double Precision Real number
Definition dc_types.f90:83