Loading...
Searching...
No Matches
dcdatetimegt.f90
Go to the documentation of this file.
1!= 利用者定義演算子 (>) のための関数
2!= Functions for user defined operation (>)
3!
4! Authors:: Yasuhiro MORIKAWA
5! Version:: $Id: dcdatetimegt.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_gt_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(+), operator(-), operator(*), operator(/), &
21 & modulo, int, abs, sign
22 implicit none
23 type(dc_datetime), intent(in):: time1, time2
24 type(dc_scaled_sec):: year1, year2, time1_sec, time2_sec
25 continue
26 call eval(time1, sclyear=year1)
27 call eval(time2, sclyear=year2)
28 if (year1 > year2) then
29 result = .true.
30 elseif (year1 < year2) then
31 result = .false.
32 else
33 time1_sec = evalsclsec(time1) + evalsclsec(zonetodiff(time1 % zone))
34 time2_sec = evalsclsec(time2) + evalsclsec(zonetodiff(time2 % zone))
35 if (time1_sec > time2_sec) then
36 result = .true.
37 else
38 result = .false.
39 end if
40 end if
41 end function dcdatetime_gt_tt
42
43 logical function dcdatetime_gt_ff(diff1, diff2) result(result)
44 !
45 ! 2 つの引数の日時差を比較します.
46 ! 1 つ目の引数に格納される日時差が 2 つ目の引数に格納される日時差
47 ! よりも大きい場合, .true. が返ります.
48 !
49 use dc_date_generic, only: evalsec
51 use dc_scaledsec, only: &
52 & operator(<), operator(>), operator(<=), operator(>=), operator(==)
54 implicit none
55 type(dc_difftime), intent(in):: diff1, diff2
56 continue
57 if ( diff1 % day_seconds == diff2 % day_seconds ) then
58
59 if ( diff1 % mon > diff2 % mon ) then
60 result = .true. ; return
61 elseif ( diff1 % mon < diff2 % mon ) then
62 result = .false. ; return
63 end if
64 if ( diff1 % day > diff2 % day ) then
65 result = .true. ; return
66 elseif ( diff1 % day < diff2 % day ) then
67 result = .false. ; return
68 end if
69 if ( diff1 % sec > diff2 % sec ) then
70 result = .true. ; return
71 elseif ( diff1 % sec < diff2 % sec ) then
72 result = .false. ; return
73 end if
74 result = .false.
75 else
76
77 if (evalsec(diff1) > evalsec(diff2)) then
78 result = .true.
79 else
80 result = .false.
81 end if
82 end if
83 end function dcdatetime_gt_ff
84
85 logical function dcdatetime_gt_fi(diff, factor) result(result)
86 !
87 ! 2 つの引数の日時差を比較します.
88 ! 1 つ目の引数に格納される日時差が 2 つ目の引数に格納される日時差
89 ! よりも大きい場合, .true. が返ります.
90 !
91 use dc_date_generic, only: evalsec
93 implicit none
94 type(dc_difftime), intent(in):: diff
95 integer, intent(in):: factor
96 continue
97 result = evalsec(diff) > factor
98 end function dcdatetime_gt_fi
99
100 logical function dcdatetime_gt_if(factor, diff) result(result)
101 !
102 ! 2 つの引数の日時差を比較します.
103 ! 1 つ目の引数に格納される日時差が 2 つ目の引数に格納される日時差
104 ! よりも大きい場合, .true. が返ります.
105 !
106 use dc_date_generic, only: evalsec
108 implicit none
109 integer, intent(in):: factor
110 type(dc_difftime), intent(in):: diff
111 continue
112 result = factor > evalsec(diff)
113 end function dcdatetime_gt_if
logical function dcdatetime_gt_tt(time1, time2)
logical function dcdatetime_gt_if(factor, diff)
logical function dcdatetime_gt_fi(diff, factor)
logical function dcdatetime_gt_ff(diff1, diff2)
real(dp), parameter, public cyclic_mdays