Loading...
Searching...
No Matches
dcdatetimeeq.f90
Go to the documentation of this file.
1!= 利用者定義演算子 (==) のための関数
2!= Functions for user defined operation (==)
3!
4! Authors:: Yasuhiro MORIKAWA
5! Version:: $Id: dcdatetimeeq.f90,v 1.1 2009-05-25 10:01:34 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 logical function dcdatetime_eq_tt(time1, time2) result(result)
11 !
12 ! 2 つの引数の日時を比較します.
13 ! 1 つ目の引数に格納される日時が 2 つ目の引数に格納される日時
14 ! と同じ場合, .true. が返ります.
15 !
18 use dc_scaledsec, only: dc_scaled_sec, &
19 & operator(==), operator(<), operator(>), operator(<=), operator(>=), &
20 & operator(+), assignment(=)
21 implicit none
22 type(dc_datetime), intent(in):: time1, time2
23 type(dc_scaled_sec):: year1, year2, time1_sec, time2_sec
24 continue
25 call eval(time1, sclyear=year1)
26 call eval(time2, sclyear=year2)
27 time1_sec = evalsclsec(time1) + evalsclsec(zonetodiff(time1 % zone))
28 time2_sec = evalsclsec(time2) + evalsclsec(zonetodiff(time2 % zone))
29 if (year1 == year2 .and. time1_sec == time2_sec) then
30 result = .true.
31 else
32 result = .false.
33 end if
34 end function dcdatetime_eq_tt
35
36
37 logical function dcdatetime_eq_ff(diff1, diff2) result(result)
38 !
39 ! 2 つの引数の日時差を比較します.
40 ! 1 つ目の引数に格納される日時差が 2 つ目の引数に格納される日時差
41 ! と同じ場合, .true. が返ります.
42 !
43 use dc_scaledsec, only: operator(==)
45 implicit none
46 type(dc_difftime), intent(in):: diff1, diff2
47 continue
48 if ( diff1 % mon == diff2 % mon &
49 & .and. diff1 % day == diff2 % day &
50 & .and. diff1 % sec == diff2 % sec ) then
51 result = .true.
52 else
53 result = .false.
54 end if
55 end function dcdatetime_eq_ff
56
57 logical function dcdatetime_eq_if(i, diff) result(result)
58 !
59 ! 引数 *diff* の日時差が *i* と等しいかどうかを比較します. *diff*
60 ! を秒数に換算した値と *i* とが等しい場合, .true. が返ります.
61 !
62 use dc_date_generic, only: operator(==)
64 implicit none
65 type(dc_difftime), intent(in):: diff
66 integer, intent(in):: i
67 continue
68 result = real(i) == diff
69 end function dcdatetime_eq_if
70
71 logical function dcdatetime_eq_fi(diff, i) result(result)
72 use dc_date_generic, only: operator(==)
74 implicit none
75 type(dc_difftime), intent(in):: diff
76 integer, intent(in):: i
77 continue
78 result = i == diff
79 end function dcdatetime_eq_fi
80
81 logical function dcdatetime_eq_rf(r, diff) result(result)
82 !
83 ! 引数 *diff* の日時差が *r* と等しいかどうかを比較します. *diff*
84 ! を秒数に換算した値と *r* とが等しい場合, .true. が返ります.
85 !
86 use dc_scaledsec, only: operator(==)
89 implicit none
90 type(dc_difftime), intent(in):: diff
91 real, intent(in):: r
92 continue
93 if (evalsclsec(diff) == r) then
94 result = .true.
95 else
96 result = .false.
97 end if
98 end function dcdatetime_eq_rf
99
100 logical function dcdatetime_eq_fr(diff, r) result(result)
101 use dc_date_generic, only: operator(==)
103 implicit none
104 type(dc_difftime), intent(in):: diff
105 real, intent(in):: r
106 continue
107 result = r == diff
108 end function dcdatetime_eq_fr
109
110 logical function dcdatetime_eq_df(d, diff) result(result)
111 !
112 ! 引数 *diff* の日時差が *d* と等しいかどうかを比較します. *diff*
113 ! を秒数に換算した値と *d* とが等しい場合, .true. が返ります.
114 !
115 use dc_date_generic, only: evalsclsec
117 use dc_scaledsec, only: operator(==)
118 use dc_types, only: dp
119 implicit none
120 type(dc_difftime), intent(in):: diff
121 real(dp), intent(in):: d
122 continue
123 if (evalsclsec(diff) == d) then
124 result = .true.
125 else
126 result = .false.
127 end if
128 end function dcdatetime_eq_df
129
130 logical function dcdatetime_eq_fd(diff, d) result(result)
131 use dc_date_generic, only: operator(==)
132 use dc_types, only: dp
134 implicit none
135 type(dc_difftime), intent(in):: diff
136 real(dp), intent(in):: d
137 continue
138 result = d == diff
139 end function dcdatetime_eq_fd
logical function dcdatetime_eq_df(d, diff)
logical function dcdatetime_eq_fd(diff, d)
logical function dcdatetime_eq_ff(diff1, diff2)
logical function dcdatetime_eq_tt(time1, time2)
logical function dcdatetime_eq_if(i, diff)
logical function dcdatetime_eq_fr(diff, r)
logical function dcdatetime_eq_rf(r, diff)
logical function dcdatetime_eq_fi(diff, i)
Provides kind type parameter values.
Definition dc_types.f90:49
integer, parameter, public dp
Double Precision Real number
Definition dc_types.f90:83