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(operator'dc_date#(+)', 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_datetime) function dcdatetime_add_tf(time, diff)
type(dc_difftime) function dcdatetime_add_fd(diff, sec)
type(dc_difftime) function dcdatetime_add_fi(diff, sec)
type(dc_difftime) function dcdatetime_add_ff(diff1, diff2)
subroutine, public dcdate_nondimcheck(opr, diff1, diff2, rslt)
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
type(dc_difftime) function dcdatetime_add_fr(diff, sec)
種別型パラメタを提供します。
Definition: dc_types.f90:49
type(dc_datetime) function dcdatetime_add_ft(diff, time)
subroutine, public dcdate_normalize(day, sec, day_seconds, nondim_flag)