16 use dc_present,
only: present_and_not_empty
42 &
operator(<),
operator(>),
operator(<=),
operator(>=), &
43 &
operator(+),
operator(-),
operator(*),
operator(/), &
49 logical,
intent(in):: nondim_flag
52 if ( nondim_flag )
return
59 if (
abs(sec) >= day_sec)
then
60 day = day +
int(sec / day_sec)
64 if ( ( sec > zero_sec .and. day < zero_sec ) &
65 & .or. ( sec < zero_sec .and. day > zero_sec ) )
then
68 sec = sec + sgn * day_sec
95 character(*),
intent(in):: opr
96 type(dc_difftime),
intent(in):: diff1, diff2
97 type(dc_difftime),
intent(inout):: rslt
99 if ( ( diff1 % nondim_flag .and. .not. diff2 % nondim_flag ) &
100 & .or. ( .not. diff1 % nondim_flag .and. diff2 % nondim_flag ) )
then
103 rslt % nondim_flag = diff1 % nondim_flag
106 function parsetimeunits(str)
result(symbol)
139 use dc_string,
only: strieq
141 character(*),
intent(in):: str
143 integer:: unit_str_size, i
144 character(TOKEN):: unit
148 do i = 1, unit_str_size
156 do i = 1, unit_str_size
157 if (strieq(trim(unit), trim(
unit_sec(i))))
then
164 do i = 1, unit_str_size
165 if (strieq(trim(unit), trim(
unit_min(i))))
then
172 do i = 1, unit_str_size
173 if (strieq(trim(unit), trim(
unit_hour(i))))
then
180 do i = 1, unit_str_size
181 if (strieq(trim(unit), trim(
unit_day(i))))
then
188 do i = 1, unit_str_size
189 if (strieq(trim(unit), trim(
unit_month(i))))
then
196 do i = 1, unit_str_size
197 if (strieq(trim(unit), trim(
unit_year(i))))
then
205 end function parsetimeunits
232 use dc_string,
only: strieq
234 character(*),
intent(in):: str
235 integer :: unit_str_size, i
239 do i = 1, unit_str_size
247 do i = 1, unit_str_size
248 if (strieq(trim(unit), trim(
unit_sec(i))))
then
255 do i = 1, unit_str_size
256 if (strieq(trim(unit), trim(
unit_min(i))))
then
263 do i = 1, unit_str_size
264 if (strieq(trim(unit), trim(
unit_hour(i))))
then
271 do i = 1, unit_str_size
272 if (strieq(trim(unit), trim(
unit_day(i))))
then
279 do i = 1, unit_str_size
280 if (strieq(trim(unit), trim(
unit_month(i))))
then
287 do i = 1, unit_str_size
288 if (strieq(trim(unit), trim(
unit_year(i))))
then
character(token) function, public dcdate_parse_unit(str)
subroutine, public dcdate_set_day_seconds_scl
subroutine, public dcdate_normalize(day, sec, day_seconds, nondim_flag)
subroutine, public dcdate_nondimcheck(opr, diff1, diff2, rslt)
character(*), dimension(6), parameter, public unit_month
integer, parameter, public unit_symbol_err
integer, parameter, public unit_symbol_hour
integer, parameter, public unit_symbol_min
integer, parameter, public unit_symbol_month
character(*), dimension(1), parameter, public unit_nondim
real(dp), save, public day_seconds
integer, parameter, public unit_symbol_sec
integer, parameter, public unit_symbol_nondim
type(dc_scaled_sec), save, public day_seconds_scl
character(*), dimension(4), parameter, public unit_day
logical, save, public flag_set_day_seconds_scl
character(*), dimension(8), parameter, public unit_sec
character(*), dimension(8), parameter, public unit_hour
integer, parameter, public unit_symbol_day
character(*), dimension(4), parameter, public unit_year
integer, parameter, public unit_symbol_year
character(*), dimension(4), parameter, public unit_min
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_edimtime
Provides kind type parameter values.
integer, parameter, public token
Character length for word, token
integer, parameter, public string
Character length for string
integer, parameter, public dp
Double Precision Real number