Loading...
Searching...
No Matches
dcdatetimeadd.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: dcdatetimeadd.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_add_ft(diff, time) 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_difftime), intent(in):: diff
24 type(dc_datetime), intent(in):: time
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, sclyear = time_year, sclmon = time_mon, &
30 & sclday = time_day, sclsec = time_sec, &
31 & caltype = time_caltype, zone = time_zone)
32 call dcdatetimecreate(result, sclyear = time_year, &
33 & sclmon = time_mon + diff % mon, &
34 & sclday = time_day + diff % day, &
35 & sclsec = time_sec + diff % sec, &
36 & caltype = time_caltype, zone = time_zone)
37 end function dcdatetime_add_ft
38
39 function dcdatetime_add_tf(time, diff) result(result)
40 use dc_date_generic, only: operator(+)
42 use dc_types, only: dp
43 implicit none
44 type(dc_datetime):: result
45 type(dc_datetime), intent(in):: time
46 type(dc_difftime), intent(in):: diff
47 continue
48 result = diff + time
49 end function dcdatetime_add_tf
50
51 function dcdatetime_add_ff(diff1, diff2) result(result)
54 use dc_scaledsec, only: operator(+)
55 implicit none
56 type(dc_difftime):: result
57 type(dc_difftime), intent(in):: diff1, diff2
58 continue
59 result % mon = diff1 % mon + diff2 % mon
60 result % day = diff1 % day + diff2 % day
61 result % sec = diff1 % sec + diff2 % sec
62 result % day_seconds = diff1 % day_seconds
63 call dcdate_nondimcheck('dc_date#operator(+)', diff1, diff2, result)
64 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
65 end function dcdatetime_add_ff
66
67 function dcdatetime_add_fd(diff, sec) result(result)
70 use dc_scaledsec, only: operator(+)
71 use dc_types, only: dp
72 implicit none
73 type(dc_difftime):: result
74 type(dc_difftime), intent(in):: diff
75 real(dp), intent(in):: sec
76 continue
77 result % mon = diff % mon
78 result % day = diff % day
79 result % sec = diff % sec + sec
80 result % day_seconds = diff % day_seconds
81 call dcdate_normalize(result % day, result % sec, result % day_seconds, result % nondim_flag)
82 end function dcdatetime_add_fd
83
84 function dcdatetime_add_fr(diff, sec) result(result)
86 use dc_date_generic, only: operator(+)
87 use dc_scaledsec, only: operator(+)
88 use dc_types, only: dp
89 implicit none
90 type(dc_difftime):: result
91 type(dc_difftime), intent(in):: diff
92 real, intent(in):: sec
93 continue
94 result = diff + real( sec, dp )
95 end function dcdatetime_add_fr
96
97 function dcdatetime_add_fi(diff, sec) result(result)
99 use dc_date_generic, only: operator(+)
100 use dc_scaledsec, only: operator(+)
101 use dc_types, only: dp
102 implicit none
103 type(dc_difftime):: result
104 type(dc_difftime), intent(in):: diff
105 integer, intent(in):: sec
106 continue
107 result = diff + real( sec, dp )
108 end function dcdatetime_add_fi
type(dc_difftime) function dcdatetime_add_fd(diff, sec)
type(dc_datetime) function dcdatetime_add_tf(time, diff)
type(dc_difftime) function dcdatetime_add_ff(diff1, diff2)
type(dc_datetime) function dcdatetime_add_ft(diff, time)
type(dc_difftime) function dcdatetime_add_fr(diff, sec)
type(dc_difftime) function dcdatetime_add_fi(diff, sec)
subroutine, public dcdate_normalize(day, sec, day_seconds, nondim_flag)
subroutine, public dcdate_nondimcheck(opr, diff1, diff2, rslt)
integer, save, public caltype
種別型パラメタを提供します。
Definition dc_types.f90:49
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:83