gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
dc_date_generic.f90
Go to the documentation of this file.
1! -*- mode: f90; coding: utf-8 -*-
2!-----------------------------------------------------------------------
3! Copyright (c) 2000-2026 Gtool Development Group. All rights reserved.
4!-----------------------------------------------------------------------
5!>
6!> @author Yasuhiro MORIKAWA, Eizi TOYODA
7!> @copyright Copyright (C) GFD Dennou Club, 2000-2026. All rights reserved. <br/>
8!> License is BSD-2-Clause. see [COPYRIGHT](@ref COPYRIGHT) in detail
9!>
10!> @en
11!> @brief Interface declarations for procedures provided from dc_date
12!> @details
13!> This module provides interface declarations for procedures in dc_date.
14!> See dc_date for module overview.
15!>
16!> @section date_generic_procedures Procedures List
17!>
18!> The following procedures operate on DC_DATETIME or DC_DIFFTIME
19!> derived types (which store date/time information).
20!>
21!> | Procedure | Description |
22!> |----------------------|--------------------------------------------------|
23!> | DCDateTimeCreate | Initialize DC_DATETIME type variable |
24!> | DCDiffTimeCreate | Initialize DC_DIFFTIME type variable |
25!> | assignment(=) | Initialize DC_DATETIME/DC_DIFFTIME variables |
26!> | Eval | Get individual date/time components |
27!> | toChar | Convert date/time to character string |
28!> | EvalDay | Get as number of days (real type) |
29!> | EvalHour | Get as number of hours (real type) |
30!> | EvalMin | Get as number of minutes (real type) |
31!> | EvalSec | Get as number of seconds (real type) |
32!> | EvalNondim | Get as nondimensional time (real type) |
33!> | EvalByUnit | Get in specified unit (day/hour/min/sec) |
34!> | operator(+) | Addition (DC_DATETIME and DC_DIFFTIME types) |
35!> | operator(-) | Subtraction (DC_DATETIME and DC_DIFFTIME types) |
36!> | operator(*) | Multiplication (DC_DIFFTIME and numeric types) |
37!> | operator(/) | Division (DC_DIFFTIME and numeric types) |
38!> | mod | Remainder (between DC_DIFFTIME types) |
39!> | operator(==) | Comparison (between DC_DATETIME types) |
40!> | operator(>) | Comparison (between DC_DATETIME types) |
41!> | operator(>=) | Comparison (between DC_DATETIME types) |
42!> | operator(<) | Comparison (between DC_DATETIME types) |
43!> | operator(<=) | Comparison (between DC_DATETIME types) |
44!> | max | Return larger value |
45!> | min | Return smaller value |
46!> | SetZone | Change timezone |
47!> | DCDateTimePutLine | Print DC_DATETIME variable information |
48!> | DCDiffTimePutLine | Print DC_DIFFTIME variable information |
49!>
50!> The following procedures modify internal variables in dc_date_types:
51!>
52!> | Procedure | Description |
53!> |----------------|----------------------------------------------------|
54!> | SetCaltype | Change default calendar type |
55!> | SetSecOfDay | Change default seconds per day |
56!>
57!> Other procedures:
58!>
59!> | Procedure | Description |
60!> |----------------|----------------------------------------------------|
61!> | ValidCaltype | Check if calendar type is valid |
62!> | ValidZone | Check if timezone is valid |
63!> | ZoneToDiff | Convert timezone to DC_DIFFTIME variable |
64!> | ParseTimeUnits | Parse time unit and return unit symbol |
65!>
66!> @section date_generic_usage Usage
67!>
68!> @subsection date_generic_current Display Current Time
69!>
70!> When DCDateTimeCreate subroutine is used on a DC_DATETIME type variable,
71!> the time is set. If year/month/day are not specified, current time is set.
72!> The set time can be converted to character type with toChar.
73!> See dc_string::Printf for Printf subroutine details.
74!>
75!> @code{.f90}
76!> program dc_date_sample1
77!> use dc_string, only: Printf
78!> use dc_date, only: DC_DATETIME, DCDateTimeCreate, toChar
79!> implicit none
80!> type(DC_DATETIME) :: time
81!>
82!> call DCDateTimeCreate( time = time ) ! (out)
83!> call Printf( fmt = 'current date and time is %c', c1 = trim( toChar(time) ) )
84!> end program dc_date_sample1
85!> @endcode
86!>
87!> @subsection date_generic_add Adding Date/Time Information
88!>
89!> DC_DIFFTIME type variables express time differences. In the example below,
90!> variable *diff* is prepared and set to 25 days + 12 hours + 50 minutes
91!> using Create subroutine. By adding DC_DATETIME variable *time_before*
92!> and *diff* with operator(+), we get *time_after* which is 25 days +
93!> 12 hours + 50 minutes ahead of *time_before*.
94!>
95!> @code{.f90}
96!> program dc_date_sample2
97!> use dc_types, only: DP
98!> use dc_string, only: Printf
99!> use dc_date, only: DC_DATETIME, DC_DIFFTIME, &
100!> & DCDateTimeCreate, DCDiffTimeCreate, toChar, operator(+)
101!> implicit none
102!> type(DC_DATETIME) :: time_before, time_after
103!> type(DC_DIFFTIME) :: diff
104!>
105!> call DCDateTimeCreate( time = time_before, & ! (out)
106!> & year = 2006, mon = 6, day = 10, & ! (in)
107!> & hour = 14, min = 15, sec = 0.0_DP ) ! (in)
108!> call DCDiffTimeCreate( diff = diff, & ! (out)
109!> & day = 25, hour = 12, min = 50) ! (in)
110!>
111!> time_after = time_before + diff
112!>
113!> call Printf( fmt = '%c + %c = %c', &
114!> & c1 = trim( toChar(time_before) ), c2 = trim( toChar(diff) ), &
115!> & c3 = trim( toChar(time_after) ) )
116!> end program dc_date_sample2
117!> @endcode
118!>
119!> @subsection date_generic_loop Application to Time Integration Loop
120!>
121!> Below is an example program solving dA/dt = -αA (initial value 1, α=0.0001)
122!> up to t = 12 (hours) using forward difference. By using DC_DIFFTIME for
123!> Δt, data output interval, and calculation time, loop termination and
124!> time comparison for data output become easy.
125!>
126!> @code{.f90}
127!> program dc_date_sample3
128!> use dc_types, only: DP
129!> use dc_date, only: DC_DIFFTIME, &
130!> & DCDiffTimeCreate, EvalSec, EvalByUnit, mod, &
131!> & operator(*), operator(==), operator(>)
132!> implicit none
133!> real(DP) :: func_a = 1.0d0 ! Initial value of function A
134!> real(DP), parameter :: alph = 0.0001d0 ! Coefficient α
135!> character(*), parameter :: out_unit = 'hour' ! Unit for output time
136!> type(DC_DIFFTIME):: DelTimef, intervalf, calctimef
137!> integer :: i
138!> continue
139!> call DCDiffTimeCreate( & ! Δt = 5.0 (sec)
140!> & diff = DelTimef, & ! (out)
141!> & value = 5.0_DP, unit = 'sec') ! (in)
142!> call DCDiffTimeCreate( & ! Data output interval = 1.0 (min)
143!> & diff = intervalf, & ! (out)
144!> & value = 1.0_DP, unit = 'min') ! (in)
145!> call DCDiffTimeCreate( & ! Calculation time = 12.0 (hour)
146!> & diff = calctimef, & ! (out)
147!> & value = 12.0_DP, unit = 'hour') ! (in)
148!>
149!> open( 10, file='dc_date_sample.dat' )
150!> write(10,'(A,A,A)') '# ', out_unit, ' value'
151!>
152!> i = 1
153!> do
154!> if (DelTimef * i > calctimef) exit ! Exit when past calculation time
155!>
156!> ! A_(n+1) = (1 - αΔt) * A_(n)
157!> func_a = (1.0 - alph * EvalSec(DelTimef)) * func_a
158!>
159!> ! Output data every intervalf (1 min)
160!> if (mod(DelTimef * i, intervalf) == 0) then
161!> write(10,*) ' ', EvalByUnit( DelTimef * i, out_unit ), func_a
162!> end if
163!> i = i + 1
164!> end do
165!> end program dc_date_sample3
166!> @endcode
167!>
168!> @enden
169!>
170!> @ja
171!> @brief dc_date より提供される手続の引用仕様宣言
172!> @details
173!> このモジュールは dc_date の手続きの引用仕様を提供します.
174!> モジュールの概要については dc_date を参照ください.
175!>
176!> @section date_generic_procedures_ja 手続一覧
177!>
178!> 以下の手続きは DC_DATETIME または DC_DIFFTIME 派生型
179!> (日時・時刻に関する情報を格納) を対象とします.
180!>
181!> | 手続名 | 説明 |
182!> |----------------------|--------------------------------------------------|
183!> | DCDateTimeCreate | DC_DATETIME 型変数の初期設定 |
184!> | DCDiffTimeCreate | DC_DIFFTIME 型変数の初期設定 |
185!> | assignment(=) | DC_DATETIME/DC_DIFFTIME 変数の初期設定 |
186!> | Eval | 日時・時刻情報を個別に取得 |
187!> | toChar | 日時・時刻情報を文字型変数へ変換 |
188!> | EvalDay | 日数 (実数型) に換算して取得 |
189!> | EvalHour | 時間 (実数型) に換算して取得 |
190!> | EvalMin | 分 (実数型) に換算して取得 |
191!> | EvalSec | 秒 (実数型) に換算して取得 |
192!> | EvalNondim | 無次元時間 (実数型) に換算して取得 |
193!> | EvalByUnit | 単位を指定し、日・時・分・秒のいずれかに換算 |
194!> | operator(+) | 加算 (DC_DATETIME/DC_DIFFTIME 型同士) |
195!> | operator(-) | 減算 (DC_DATETIME/DC_DIFFTIME 型同士) |
196!> | operator(*) | 乗算 (DC_DIFFTIME 型と数値型) |
197!> | operator(/) | 除算 (DC_DIFFTIME 型と数値型) |
198!> | mod | 余り (DC_DIFFTIME 型同士) |
199!> | operator(==) | 比較 (DC_DATETIME 型同士) |
200!> | operator(>) | 比較 (DC_DATETIME 型同士) |
201!> | operator(>=) | 比較 (DC_DATETIME 型同士) |
202!> | operator(<) | 比較 (DC_DATETIME 型同士) |
203!> | operator(<=) | 比較 (DC_DATETIME 型同士) |
204!> | max | 大きい値を返す |
205!> | min | 小さい値を返す |
206!> | SetZone | タイムゾーンを変更 |
207!> | DCDateTimePutLine | DC_DATETIME 変数の情報を印字 |
208!> | DCDiffTimePutLine | DC_DIFFTIME 変数の情報を印字 |
209!>
210!> 以下の手続きは dc_date_types 内部の変数を変更します:
211!>
212!> | 手続名 | 説明 |
213!> |----------------|--------------------------------------------------|
214!> | SetCaltype | 暦法のデフォルトを変更 |
215!> | SetSecOfDay | 1 日の秒数のデフォルトを変更 |
216!>
217!> その他の手続き:
218!>
219!> | 手続名 | 説明 |
220!> |----------------|--------------------------------------------------|
221!> | ValidCaltype | 暦法が有効なものかをチェック |
222!> | ValidZone | タイムゾーンとして有効かをチェック |
223!> | ZoneToDiff | タイムゾーンを DC_DIFFTIME 変数へと変換 |
224!> | ParseTimeUnits | 時間の単位を解析し、単位のシンボルを返す |
225!>
226!> @section date_generic_usage_ja 使用方法
227!>
228!> @subsection date_generic_current_ja 現在時刻の表示
229!>
230!> DC_DATETIME 型の変数に DCDateTimeCreate サブルーチンを用いると
231!> 時刻が設定されます. 特に年月日を指定しないと現在時刻が設定されます.
232!> 設定された時刻は toChar によって文字型変数へと変換できます.
233!> Printf サブルーチンについては dc_string::Printf を参照ください.
234!>
235!> @code{.f90}
236!> program dc_date_sample1
237!> use dc_string, only: Printf
238!> use dc_date, only: DC_DATETIME, DCDateTimeCreate, toChar
239!> implicit none
240!> type(DC_DATETIME) :: time
241!>
242!> call DCDateTimeCreate( time = time ) ! (out)
243!> call Printf( fmt = 'current date and time is %c', c1 = trim( toChar(time) ) )
244!> end program dc_date_sample1
245!> @endcode
246!>
247!> @subsection date_generic_add_ja 日時・時刻情報の加算
248!>
249!> DC_DIFFTIME 型の変数は日時差を表現します. 下記の例では、
250!> 日時差を表現するための変数として *diff* を用意し、
251!> Create サブルーチンで 25 日 + 12 時間 + 50 分の日時差を設定しています.
252!> DC_DATETIME 型の変数 *time_before* と *diff* とを operator(+) によって
253!> 加算することで *time_before* から 25 日 + 12 時間 + 50 分を
254!> 進めた日時 *time_after* を取得しています.
255!>
256!> @code{.f90}
257!> program dc_date_sample2
258!> use dc_types, only: DP
259!> use dc_string, only: Printf
260!> use dc_date, only: DC_DATETIME, DC_DIFFTIME, &
261!> & DCDateTimeCreate, DCDiffTimeCreate, toChar, operator(+)
262!> implicit none
263!> type(DC_DATETIME) :: time_before, time_after
264!> type(DC_DIFFTIME) :: diff
265!>
266!> call DCDateTimeCreate( time = time_before, & ! (out)
267!> & year = 2006, mon = 6, day = 10, & ! (in)
268!> & hour = 14, min = 15, sec = 0.0_DP ) ! (in)
269!> call DCDiffTimeCreate( diff = diff, & ! (out)
270!> & day = 25, hour = 12, min = 50) ! (in)
271!>
272!> time_after = time_before + diff
273!>
274!> call Printf( fmt = '%c + %c = %c', &
275!> & c1 = trim( toChar(time_before) ), c2 = trim( toChar(diff) ), &
276!> & c3 = trim( toChar(time_after) ) )
277!> end program dc_date_sample2
278!> @endcode
279!>
280!> @subsection date_generic_loop_ja 時間積分のループへの応用
281!>
282!> 以下は dA/dt = -αA (初期値 1, α=0.0001) を t = 12 (時間)
283!> まで解くプログラムの例です. 時間積分には前進差分を用いています.
284!> Δt、データの出力間隔、計算時間に DC_DIFFTIME を用いることで、
285!> ループの終了処理やデータ出力の際の時刻の比較が容易となります.
286!>
287!> @code{.f90}
288!> program dc_date_sample3
289!> use dc_types, only: DP
290!> use dc_date, only: DC_DIFFTIME, &
291!> & DCDiffTimeCreate, EvalSec, EvalByUnit, mod, &
292!> & operator(*), operator(==), operator(>)
293!> implicit none
294!> real(DP) :: func_a = 1.0d0 ! 関数 A の初期値
295!> real(DP), parameter :: alph = 0.0001d0 ! 係数 α
296!> character(*), parameter :: out_unit = 'hour' ! 出力される時刻の単位
297!> type(DC_DIFFTIME):: DelTimef, intervalf, calctimef
298!> integer :: i
299!> continue
300!> call DCDiffTimeCreate( & ! Δt = 5.0 (秒)
301!> & diff = DelTimef, & ! (out)
302!> & value = 5.0_DP, unit = 'sec') ! (in)
303!> call DCDiffTimeCreate( & ! データ出力間隔 = 1.0 (分)
304!> & diff = intervalf, & ! (out)
305!> & value = 1.0_DP, unit = 'min') ! (in)
306!> call DCDiffTimeCreate( & ! 計算時間 = 12.0 (時間)
307!> & diff = calctimef, & ! (out)
308!> & value = 12.0_DP, unit = 'hour') ! (in)
309!>
310!> open( 10, file='dc_date_sample.dat' )
311!> write(10,'(A,A,A)') '# ', out_unit, ' value'
312!>
313!> i = 1
314!> do
315!> if (DelTimef * i > calctimef) exit ! 計算時間を過ぎたら終了
316!>
317!> ! A_(n+1) = (1 - αΔt) * A_(n)
318!> func_a = (1.0 - alph * EvalSec(DelTimef)) * func_a
319!>
320!> ! intervalf (1 分) 毎にデータを出力
321!> if (mod(DelTimef * i, intervalf) == 0) then
322!> write(10,*) ' ', EvalByUnit( DelTimef * i, out_unit ), func_a
323!> end if
324!> i = i + 1
325!> end do
326!> end program dc_date_sample3
327!> @endcode
328!>
329!> @endja
330!>
332
334 use dc_types, only: dp, string, token
336
337 implicit none
338
339 private
342 public:: eval
345
346 public:: assignment(=)
347 public:: mod, operator(/), operator(-), operator(+), operator(*)
348 public:: operator(<), operator(>), operator(>=), operator(<=)
349 public:: operator(==), max, min
350 public:: tochar, tocharcal
352 public:: evalsclsec
353
354 public:: create, putline
355 ! 後方互換用
356 ! For backward compatibility
357
359 subroutine dcdatetimecreate1(time, &
360 & year, mon, day, hour, min, sec, &
361 & zone, zone_hour, zone_min, caltype, caltype_str, day_seconds, &
362 & sclyear, sclmon, sclday, sclsec, err) !:doc-priority 40:
363 use dc_types, only: dp
364 use dc_date_types, only: dc_datetime
365 use dc_scaledsec, only: dc_scaled_sec
366 type(dc_datetime), intent(out):: time
367 integer, intent(in), optional:: year, mon, day, hour, min
368 real(DP),intent(in), optional:: sec, day_seconds
369 character(*), intent(in), optional :: zone
370 integer, intent(in), optional :: zone_hour
371 integer, intent(in), optional :: zone_min
372 integer, intent(in), optional:: caltype
373 character(*), intent(in), optional:: caltype_str
374 type(dc_scaled_sec), intent(in), optional:: sclyear, sclmon, sclday, sclsec
375 logical, intent(out), optional:: err
376 end subroutine dcdatetimecreate1
377 end interface
378
380 subroutine dcdifftimecreate1(diff, &
381 & year, mon, day, hour, min, sec, day_seconds, nondim, &
382 & sclyear, sclmon, sclday, sclsec ) !:doc-priority 60:
383 use dc_types, only: dp
384 use dc_date_types, only: dc_difftime
385 use dc_scaledsec, only: dc_scaled_sec
386 type(dc_difftime), intent(out) :: diff
387 integer, intent(in), optional:: year, mon, day, hour, min
388 real(DP),intent(in), optional:: sec, day_seconds, nondim
389 type(dc_scaled_sec), intent(in), optional:: sclyear, sclmon, sclday, sclsec
390 end subroutine dcdifftimecreate1
391
392 subroutine dcdifftimecreate2d(diff, value, unit, unit_symbol, err) !:doc-priority 70:
393 use dc_types, only: dp
394 use dc_date_types, only: dc_difftime
395 type(dc_difftime), intent(out) :: diff
396 real(DP), intent(in) :: value
397 character(*), intent(in) :: unit
398 integer, intent(in), optional :: unit_symbol
399 logical, intent(out), optional :: err
400 end subroutine dcdifftimecreate2d
401
402 subroutine dcdifftimecreate2r(diff, value, unit, unit_symbol, err) !:doc-priority 80:
403 use dc_date_types, only: dc_difftime
404 type(dc_difftime), intent(out) :: diff
405 real, intent(in) :: value
406 character(*), intent(in) :: unit
407 integer, intent(in), optional :: unit_symbol
408 logical, intent(out), optional :: err
409 end subroutine dcdifftimecreate2r
410
411 subroutine dcdifftimecreate2i(diff, value, unit, unit_symbol, err) !:doc-priority 90:
412 use dc_date_types, only: dc_difftime
413 type(dc_difftime), intent(out) :: diff
414 integer, intent(in) :: value
415 character(*), intent(in) :: unit
416 integer, intent(in), optional :: unit_symbol
417 logical, intent(out), optional :: err
418 end subroutine dcdifftimecreate2i
419
420 end interface
421
423 subroutine dcdatetimeputline(time, unit, indent)
424 use dc_date_types, only: dc_datetime
425 type(dc_datetime), intent(in) :: time
426 integer, intent(in), optional :: unit
427 character(*), intent(in), optional:: indent
428 end subroutine dcdatetimeputline
429 end interface
430
432 subroutine dcdifftimeputline(diff, unit, indent)
433 use dc_date_types, only: dc_difftime
434 type(dc_difftime), intent(in) :: diff
435 integer, intent(in), optional :: unit
436 character(*), intent(in), optional:: indent
437 end subroutine dcdifftimeputline
438 end interface
439
440 interface assignment(=)
441
442 subroutine dcdatetimecreatei(time, sec) !:doc-priority 20:
443 use dc_date_types, only: dc_datetime
444 type(dc_datetime), intent(out):: time
445 integer, intent(in):: sec
446 end subroutine dcdatetimecreatei
447
448 subroutine dcdatetimecreater(time, sec) !:doc-priority 30:
449 use dc_date_types, only: dc_datetime
450 type(dc_datetime), intent(out):: time
451 real, intent(in):: sec
452 end subroutine dcdatetimecreater
453
454 subroutine dcdatetimecreated(time, sec) !:doc-priority 40:
455 use dc_types, only: dp
456 use dc_date_types, only: dc_datetime
457 type(dc_datetime), intent(out):: time
458 real(DP), intent(in):: sec
459 end subroutine dcdatetimecreated
460
461 subroutine dcdifftimecreatei(diff, sec) !:doc-priority 60:
462 use dc_date_types, only: dc_difftime
463 type(dc_difftime), intent(out):: diff
464 integer, intent(in):: sec
465 end subroutine dcdifftimecreatei
466
467 subroutine dcdifftimecreater(diff, sec) !:doc-priority 70:
468 use dc_date_types, only: dc_difftime
469 type(dc_difftime), intent(out):: diff
470 real, intent(in):: sec
471 end subroutine dcdifftimecreater
472
473 subroutine dcdifftimecreated(diff, sec) !:doc-priority 80:
474 use dc_types, only: dp
475 use dc_date_types, only: dc_difftime
476 type(dc_difftime), intent(out):: diff
477 real(DP), intent(in):: sec
478 end subroutine dcdifftimecreated
479
480!!$ subroutine DCDateLetFC(diff, string)
481!!$ use dc_date_types, only: DC_DIFFTIME
482!!$ type(DC_DIFFTIME), intent(out):: diff
483!!$ character(len = *), intent(in):: string
484!!$ end subroutine DCDateLetFC
485!!$
486!!$ subroutine DCDateLetTC(time, string)
487!!$ use dc_date_types, only: DC_DATETIME
488!!$ type(DC_DATETIME), intent(out):: time
489!!$ character(len = *), intent(in):: string
490!!$ end subroutine DCDateLetTC
491
492 end interface
493
494 interface setcaltype
495 subroutine dcdatetimesetcaltype(caltype)
496 integer, intent(in):: caltype
497 end subroutine dcdatetimesetcaltype
498 end interface
499
500 interface setsecofday
501 subroutine dcdatetimesetsecofday(sec)
502 use dc_types, only: dp
503 real(DP), intent(in):: sec
504 end subroutine dcdatetimesetsecofday
505 end interface
506
507 interface validcaltype
508 function dcdatetimevalidcaltype(caltype) result(result)
509 integer, intent(in):: caltype
510 logical:: result
511 end function dcdatetimevalidcaltype
512 end interface
513
514 interface validzone
515 function dcdatetimevalidzone(zone) result(result)
516 character(*), intent(in):: zone
517 logical:: result
518 end function dcdatetimevalidzone
519 end interface
520
521 interface zonetodiff
522 function dcdatetimezonetodiff(zone) result(diff)
523 use dc_date_types, only: dc_difftime
524 type(dc_difftime):: diff
525 character(*), intent(in):: zone
526 end function dcdatetimezonetodiff
527 end interface
528
530 function dcdatetimeparseunits(str) result(symbol)
531 character(*), intent(in):: str
532 integer:: symbol
533 end function dcdatetimeparseunits
534 end interface
535
536 interface setzone
537 subroutine dcdatetimesetzone(time, zone, err)
538 use dc_date_types, only: dc_datetime
539 type(dc_datetime), intent(inout):: time
540 character(*), intent(in):: zone
541 logical, intent(out), optional:: err
542 end subroutine dcdatetimesetzone
543 end interface
544
545
546 interface eval
547
548 subroutine dcdatetimeeval1(time, year, mon, day, hour, min, &
549 & sec, caltype, zone, sclyear, sclmon, sclday, sclsec) !:doc-priority 40:
550 use dc_types, only: dp
551 use dc_date_types, only: dc_datetime
552 use dc_scaledsec, only: dc_scaled_sec
553 type(dc_datetime), intent(in):: time
554 integer, intent(out), optional:: year, mon, day, hour, min, caltype
555 real(DP), intent(out), optional:: sec
556 character(*), intent(out), optional:: zone
557 type(dc_scaled_sec), intent(out), optional:: sclyear, sclmon, sclday, sclsec
558 end subroutine dcdatetimeeval1
559
560!!$ subroutine DCDateTimeEval0(time, mon, day, sec)
561!!$ use dc_date_types, only: DC_DATETIME
562!!$ use dc_types, only: DP
563!!$ type(DC_DATETIME), intent(in):: time
564!!$ integer, intent(out):: mon, day
565!!$ real(DP), intent(out):: sec
566!!$ end subroutine DCDateTimeEval0
567
568 subroutine dcdifftimeeval1(diff, &
569 & year, mon, day, hour, min, sec, nondim, &
570 & sclyear, sclmon, sclday, sclsec, sclnondim, err) !:doc-priority 60:
571 use dc_types, only: dp
572 use dc_date_types, only: dc_difftime
573 use dc_scaledsec, only: dc_scaled_sec
574 type(dc_difftime), intent(in):: diff
575 integer, intent(out), optional:: year, mon, day, hour, min
576 real(DP), intent(out), optional:: sec, nondim
577 type(dc_scaled_sec), intent(out), optional:: sclyear, sclmon, sclday, sclsec, sclnondim
578 logical, intent(out), optional :: err
579 end subroutine dcdifftimeeval1
580
581 end interface
582
583 interface evalday
584 function dcdatetimeevalday(time) result(result) !:doc-priority 40:
585 use dc_types, only: dp
586 use dc_date_types, only: dc_datetime
587 real(dp):: result
588 type(dc_datetime), intent(in):: time
589 end function dcdatetimeevalday
590
591 function dcdifftimeevalday(diff) result(result) !:doc-priority 60:
592 use dc_types, only: dp
593 use dc_date_types, only: dc_difftime
594 real(dp):: result
595 type(dc_difftime), intent(in):: diff
596 end function dcdifftimeevalday
597 end interface
598
599 interface evalhour
600 function dcdatetimeevalhour(time) result(result) !:doc-priority 40:
601 use dc_types, only: dp
602 use dc_date_types, only: dc_datetime
603 real(dp):: result
604 type(dc_datetime), intent(in):: time
605 end function dcdatetimeevalhour
606
607 function dcdifftimeevalhour(diff) result(result) !:doc-priority 60:
608 use dc_types, only: dp
609 use dc_date_types, only: dc_difftime
610 real(dp):: result
611 type(dc_difftime), intent(in):: diff
612 end function dcdifftimeevalhour
613 end interface
614
615 interface evalmin
616 function dcdatetimeevalmin(time) result(result) !:doc-priority 40:
617 use dc_types, only: dp
618 use dc_date_types, only: dc_datetime
619 real(dp):: result
620 type(dc_datetime), intent(in):: time
621 end function dcdatetimeevalmin
622
623 function dcdifftimeevalmin(diff) result(result) !:doc-priority 60:
624 use dc_types, only: dp
625 use dc_date_types, only: dc_difftime
626 real(dp):: result
627 type(dc_difftime), intent(in):: diff
628 end function dcdifftimeevalmin
629 end interface
630
631 interface evalsec
632 function dcdatetimeevalsec(time) result(result) !:doc-priority 40:
633 use dc_types, only: dp
634 use dc_date_types, only: dc_datetime
635 real(dp):: result
636 type(dc_datetime), intent(in):: time
637 end function dcdatetimeevalsec
638
639 function dcdifftimeevalsec(diff) result(result) !:doc-priority 60:
640 use dc_types, only: dp
641 use dc_date_types, only: dc_difftime
642 real(dp):: result
643 type(dc_difftime), intent(in):: diff
644 end function dcdifftimeevalsec
645 end interface
646
647 interface evalnondim
648 function dcdifftimeevalnondim(diff) result(result)
649 use dc_types, only: dp
650 use dc_date_types, only: dc_difftime
651 real(dp):: result
652 type(dc_difftime), intent(in):: diff
653 end function dcdifftimeevalnondim
654 end interface
655
656 interface evalsclsec
657 function dcdatetimeevalsclsec(time) result(result) !:doc-priority 40:
658 use dc_date_types, only: dc_datetime
659 use dc_scaledsec, only: dc_scaled_sec
660 type(dc_scaled_sec):: result
661 type(dc_datetime), intent(in):: time
662 end function dcdatetimeevalsclsec
663
664 function dcdifftimeevalsclsec(diff) result(result) !:doc-priority 60:
665 use dc_date_types, only: dc_difftime
666 use dc_scaledsec, only: dc_scaled_sec
667 type(dc_scaled_sec):: result
668 type(dc_difftime), intent(in):: diff
669 end function dcdifftimeevalsclsec
670 end interface
671
672 interface evalbyunit
673
674 function dcdatetimeevalbyunit(time, unit, unit_symbol) result(result)
675 use dc_types, only: dp, token
676 use dc_date_types, only: dc_datetime
677 real(dp):: result
678 type(dc_datetime), intent(in):: time
679 character(*), intent(in), optional:: unit
680 integer, intent(in), optional:: unit_symbol
681 end function dcdatetimeevalbyunit
682
683 function dcdifftimeevalbyunit(diff, unit, unit_symbol) result(result)
684 use dc_types, only: dp, token
685 use dc_date_types, only: dc_difftime
686 real(dp):: result
687 type(dc_difftime), intent(in):: diff
688 character(*), intent(in), optional:: unit
689 integer, intent(in), optional:: unit_symbol
690 end function dcdifftimeevalbyunit
691 end interface
692
693
694
695 interface tochar
696 function dcdatetimetochar(time) result(result) !:doc-priority 40:
697 use dc_types, only: string
698 use dc_date_types, only: dc_datetime
699 character(STRING) :: result
700 type(dc_datetime), intent(in):: time
701 end function dcdatetimetochar
702
703 function dcdifftimetochar(diff) result(result) !:doc-priority 60:
704 use dc_types, only: string
705 use dc_date_types, only: dc_difftime
706 character(STRING) :: result
707 type(dc_difftime), intent(in):: diff
708 end function dcdifftimetochar
709 end interface
710
711 interface tocharcal
712 function dcdatetimetocharcal(time, upcase) result(result)
713 use dc_types, only: token
714 use dc_date_types, only: dc_datetime
715 character(TOKEN) :: result
716 type(dc_datetime), intent(in):: time
717 logical, intent(in), optional:: upcase
718 end function dcdatetimetocharcal
719 end interface
720
721 interface operator(+)
722 type(dc_datetime) function dcdatetime_add_ft(diff, time) result(result)
724 type(dc_difftime), intent(in):: diff
725 type(dc_datetime), intent(in):: time
726 end function dcdatetime_add_ft
727
728 type(dc_datetime) function dcdatetime_add_tf(time, diff) result(result)
730 type(dc_datetime), intent(in):: time
731 type(dc_difftime), intent(in):: diff
732 end function dcdatetime_add_tf
733
734 type(dc_difftime) function dcdatetime_add_ff(diff1, diff2) result(result)
736 type(dc_difftime), intent(in):: diff1, diff2
737 end function dcdatetime_add_ff
738
739 type(dc_difftime) function dcdatetime_add_fd(diff, sec) result(result)
741 use dc_types, only: dp
742 type(dc_difftime), intent(in):: diff
743 real(dp), intent(in):: sec
744 end function dcdatetime_add_fd
745
746 type(dc_difftime) function dcdatetime_add_fr(diff, sec) result(result)
748 type(dc_difftime), intent(in):: diff
749 real, intent(in):: sec
750 end function dcdatetime_add_fr
751
752 type(dc_difftime) function dcdatetime_add_fi(diff, sec) result(result)
754 type(dc_difftime), intent(in):: diff
755 integer, intent(in):: sec
756 end function dcdatetime_add_fi
757 end interface
758
759 interface operator(-)
760 type(dc_datetime) function dcdatetime_sub_tf(time, diff) result(result) !:doc-priority 40:
762 type(dc_datetime), intent(in):: time
763 type(dc_difftime), intent(in):: diff
764 end function dcdatetime_sub_tf
765
766 type(dc_difftime) function dcdatetime_sub_tt(time1, time2) result(result)
768 type(dc_datetime), intent(in):: time1, time2
769 end function dcdatetime_sub_tt
770
771 type(dc_difftime) function dcdatetime_sub_ff(diff1, diff2) result(result)
773 type(dc_difftime), intent(in):: diff1, diff2
774 end function dcdatetime_sub_ff
775
776 type(dc_difftime) function dcdatetime_sub_fd(diff, sec) result(result)
778 use dc_types, only: dp
779 type(dc_difftime), intent(in):: diff
780 real(dp), intent(in):: sec
781 end function dcdatetime_sub_fd
782
783 type(dc_difftime) function dcdatetime_sub_fr(diff, sec) result(result)
785 type(dc_difftime), intent(in):: diff
786 real, intent(in):: sec
787 end function dcdatetime_sub_fr
788
789 type(dc_difftime) function dcdatetime_sub_fi(diff, sec) result(result)
791 type(dc_difftime), intent(in):: diff
792 integer, intent(in):: sec
793 end function dcdatetime_sub_fi
794 end interface
795
796 interface operator(*)
797 type(dc_difftime) function dcdatetime_mul_if(factor, diff) result(result) !:doc-priority 51:
799 integer, intent(in):: factor
800 type(dc_difftime), intent(in):: diff
801 end function dcdatetime_mul_if
802
803 type(dc_difftime) function dcdatetime_mul_fi(diff, factor) result(result) !:doc-priority 52:
805 type(dc_difftime), intent(in):: diff
806 integer, intent(in):: factor
807 end function dcdatetime_mul_fi
808
809 type(dc_difftime) function dcdatetime_mul_rf(factor, diff) result(result) !:doc-priority 61:
811 real, intent(in):: factor
812 type(dc_difftime), intent(in):: diff
813 end function dcdatetime_mul_rf
814
815 type(dc_difftime) function dcdatetime_mul_fr(diff, factor) result(result) !:doc-priority 62:
817 type(dc_difftime), intent(in):: diff
818 real, intent(in):: factor
819 end function dcdatetime_mul_fr
820
821 type(dc_difftime) function dcdatetime_mul_df(factor, diff) result(result) !:doc-priority 71:
822 use dc_types, only: dp
824 real(dp), intent(in):: factor
825 type(dc_difftime), intent(in):: diff
826 end function dcdatetime_mul_df
827
828 type(dc_difftime) function dcdatetime_mul_fd(diff, factor) result(result) !:doc-priority 72:
829 use dc_types, only: dp
831 type(dc_difftime), intent(in):: diff
832 real(dp), intent(in):: factor
833 end function dcdatetime_mul_fd
834
835 end interface
836
837 interface operator(/)
838 type(dc_difftime) function dcdatetime_div_fi(diff, denominator) result(result)
840 type(dc_difftime), intent(in):: diff
841 integer, intent(in):: denominator
842 end function dcdatetime_div_fi
843
844 type(dc_difftime) function dcdatetime_div_fr(diff, denominator) result(result)
846 type(dc_difftime), intent(in):: diff
847 real, intent(in):: denominator
848 end function dcdatetime_div_fr
849
850 type(dc_difftime) function dcdatetime_div_fd(diff, denominator) result(result)
852 use dc_types, only: dp
853 type(dc_difftime), intent(in):: diff
854 real(dp), intent(in):: denominator
855 end function dcdatetime_div_fd
856
857 real(dp) function dcdatetime_div_ff(diff1, diff2) result(result)
859 use dc_types, only: dp
860 type(dc_difftime), intent(in):: diff1, diff2
861 end function dcdatetime_div_ff
862 end interface
863
864 interface mod
865 type(dc_difftime) function dcdatetime_mod_ff(diff1, diff2) result(result)
866 use dc_date_types, only: dc_difftime
867 type(dc_difftime), intent(in):: diff1, diff2
868 end function dcdatetime_mod_ff
869 end interface
870
871 interface operator(==)
872 logical function dcdatetime_eq_tt(time1, time2) result(result) !:doc-priority 30:
874 type(dc_datetime), intent(in):: time1, time2
875 end function dcdatetime_eq_tt
876
877 logical function dcdatetime_eq_ff(diff1, diff2) result(result) !:doc-priority 40:
879 type(dc_difftime), intent(in):: diff1, diff2
880 end function dcdatetime_eq_ff
881
882 logical function dcdatetime_eq_if(i, diff) result(result) !:doc-priority 51:
884 type(dc_difftime), intent(in):: diff
885 integer, intent(in):: i
886 end function dcdatetime_eq_if
887
888 logical function dcdatetime_eq_fi(diff, i) result(result) !:doc-priority 52:
890 type(dc_difftime), intent(in):: diff
891 integer, intent(in):: i
892 end function dcdatetime_eq_fi
893
894 logical function dcdatetime_eq_rf(r, diff) result(result) !:doc-priority 61:
896 type(dc_difftime), intent(in):: diff
897 real, intent(in):: r
898 end function dcdatetime_eq_rf
899
900 logical function dcdatetime_eq_fr(diff, r) result(result) !:doc-priority 62:
902 type(dc_difftime), intent(in):: diff
903 real, intent(in):: r
904 end function dcdatetime_eq_fr
905
906 logical function dcdatetime_eq_df(d, diff) result(result) !:doc-priority 71:
907 use dc_types, only: dp
909 type(dc_difftime), intent(in):: diff
910 real(dp), intent(in):: d
911 end function dcdatetime_eq_df
912
913 logical function dcdatetime_eq_fd(diff, d) result(result) !:doc-priority 72:
914 use dc_types, only: dp
916 type(dc_difftime), intent(in):: diff
917 real(dp), intent(in):: d
918 end function dcdatetime_eq_fd
919
920 end interface
921
922
923 interface operator(>)
924 logical function dcdatetime_gt_tt(time1, time2) result(result) !:doc-priority 30:
926 type(dc_datetime), intent(in):: time1, time2
927 end function dcdatetime_gt_tt
928
929 logical function dcdatetime_gt_ff(diff1, diff2) result(result) !:doc-priority 40:
931 type(dc_difftime), intent(in):: diff1, diff2
932 end function dcdatetime_gt_ff
933
934 logical function dcdatetime_gt_fi(diff, factor) result(result) !:doc-priority 42:
936 type(dc_difftime), intent(in):: diff
937 integer, intent(in):: factor
938 end function dcdatetime_gt_fi
939
940 logical function dcdatetime_gt_if(factor, diff) result(result) !:doc-priority 44:
942 integer, intent(in):: factor
943 type(dc_difftime), intent(in):: diff
944 end function dcdatetime_gt_if
945 end interface
946
947 interface operator(<)
948 logical function dcdatetime_lt_tt(time1, time2) result(result) !:doc-priority 30:
950 type(dc_datetime), intent(in):: time1, time2
951 end function dcdatetime_lt_tt
952
953 logical function dcdatetime_lt_ff(diff1, diff2) result(result) !:doc-priority 40:
955 type(dc_difftime), intent(in):: diff1, diff2
956 end function dcdatetime_lt_ff
957
958 logical function dcdatetime_lt_fi(diff, factor) result(result) !:doc-priority 42:
960 type(dc_difftime), intent(in):: diff
961 integer, intent(in):: factor
962 end function dcdatetime_lt_fi
963
964 logical function dcdatetime_lt_if(factor, diff) result(result) !:doc-priority 44:
966 integer, intent(in):: factor
967 type(dc_difftime), intent(in):: diff
968 end function dcdatetime_lt_if
969 end interface
970
971 interface operator(>=)
972 logical function dcdatetime_ge_tt(time1, time2) result(result) !:doc-priority 30:
974 type(dc_datetime), intent(in):: time1, time2
975 end function dcdatetime_ge_tt
976
977 logical function dcdatetime_ge_ff(diff1, diff2) result(result) !:doc-priority 40:
979 type(dc_difftime), intent(in):: diff1, diff2
980 end function dcdatetime_ge_ff
981
982 logical function dcdatetime_ge_fi(diff, factor) result(result) !:doc-priority 42:
984 type(dc_difftime), intent(in):: diff
985 integer, intent(in):: factor
986 end function dcdatetime_ge_fi
987
988 logical function dcdatetime_ge_if(factor, diff) result(result) !:doc-priority 44:
990 integer, intent(in):: factor
991 type(dc_difftime), intent(in):: diff
992 end function dcdatetime_ge_if
993 end interface
994
995 interface operator(<=)
996 logical function dcdatetime_le_tt(time1, time2) result(result) !:doc-priority 30:
998 type(dc_datetime), intent(in):: time1, time2
999 end function dcdatetime_le_tt
1000
1001 logical function dcdatetime_le_ff(diff1, diff2) result(result) !:doc-priority 40:
1003 type(dc_difftime), intent(in):: diff1, diff2
1004 end function dcdatetime_le_ff
1005
1006 logical function dcdatetime_le_fi(diff, factor) result(result) !:doc-priority 42:
1008 type(dc_difftime), intent(in):: diff
1009 integer, intent(in):: factor
1010 end function dcdatetime_le_fi
1011
1012 logical function dcdatetime_le_if(factor, diff) result(result) !:doc-priority 44:
1014 integer, intent(in):: factor
1015 type(dc_difftime), intent(in):: diff
1016 end function dcdatetime_le_if
1017 end interface
1018
1019 interface max
1020 type(dc_datetime) function dcdatetime_max_tt(time1, time2) result(result) !:doc-priority 30:
1022 type(dc_datetime), intent(in):: time1, time2
1023 end function dcdatetime_max_tt
1024
1025 type(dc_difftime) function dcdatetime_max_ff(diff1, diff2) result(result) !:doc-priority 40:
1027 type(dc_difftime), intent(in):: diff1, diff2
1028 end function dcdatetime_max_ff
1029 end interface
1030
1031 interface min
1032 type(dc_datetime) function dcdatetime_min_tt(time1, time2) result(result) !:doc-priority 30:
1034 type(dc_datetime), intent(in):: time1, time2
1035 end function dcdatetime_min_tt
1036
1037 type(dc_difftime) function dcdatetime_min_ff(diff1, diff2) result(result) !:doc-priority 40:
1039 type(dc_difftime), intent(in):: diff1, diff2
1040 end function dcdatetime_min_ff
1041 end interface
1042
1043 !-----------------------------------------------
1044 ! 後方互換用
1045 ! For backward compatibility
1046 interface create
1047 subroutine dcdatetimecreate1_bc(time, &
1048 & year, mon, day, hour, min, sec, &
1049 & zone, caltype, day_seconds, err) !:doc-priority 40:
1050 use dc_types, only: dp
1051 use dc_date_types, only: dc_datetime
1052 use dc_scaledsec, only: dc_scaled_sec
1053 type(dc_datetime), intent(out):: time
1054 integer, intent(in), optional:: year, mon, day, hour, min
1055 real(DP),intent(in), optional:: sec, day_seconds
1056 character(*), intent(in), optional :: zone
1057 integer, intent(in), optional:: caltype
1058 logical, intent(out), optional:: err
1059 end subroutine dcdatetimecreate1_bc
1060
1061 subroutine dcdifftimecreate1_bc(diff, &
1062 & year, mon, day, hour, min, sec, day_seconds ) !:doc-priority 60:
1063 use dc_types, only: dp
1064 use dc_date_types, only: dc_difftime
1065 use dc_scaledsec, only: dc_scaled_sec
1066 type(dc_difftime), intent(out) :: diff
1067 integer, intent(in), optional:: year, mon, day, hour, min
1068 real(DP),intent(in), optional:: sec, day_seconds
1069 end subroutine dcdifftimecreate1_bc
1070
1071 subroutine dcdifftimecreate2_bc(diff, value, unit, unit_symbol, err) !:doc-priority 70:
1072 use dc_types, only: dp
1073 use dc_date_types, only: dc_difftime
1074 type(dc_difftime), intent(out) :: diff
1075 real(DP), intent(in) :: value
1076 character(*), intent(in) :: unit
1077 integer, intent(in), optional :: unit_symbol
1078 logical, intent(out), optional :: err
1079 end subroutine dcdifftimecreate2_bc
1080 end interface
1081
1082 interface putline
1083 subroutine dcdatetimeputline_bc(time, unit)
1084 use dc_date_types, only: dc_datetime
1085 type(dc_datetime), intent(in) :: time
1086 integer, intent(in), optional :: unit
1087 end subroutine dcdatetimeputline_bc
1088
1089 subroutine dcdifftimeputline_bc(diff, unit)
1090 use dc_date_types, only: dc_difftime
1091 type(dc_difftime), intent(in) :: diff
1092 integer, intent(in), optional :: unit
1093 end subroutine dcdifftimeputline_bc
1094 end interface
1095
1096end module dc_date_generic
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)
Functions for user defined operation (+).
type(dc_difftime) function dcdatetime_add_fr(diff, sec)
type(dc_difftime) function dcdatetime_add_fi(diff, sec)
subroutine dcdatetimecreater(time, sec)
subroutine dcdatetimecreate1_bc(time, year, mon, day, hour, min, sec, zone, caltype, day_seconds, err)
subroutine dcdifftimecreated(diff, sec)
subroutine dcdifftimecreate2r(diff, value, unit, unit_symbol, err)
subroutine dcdifftimecreatei(diff, sec)
subroutine dcdifftimecreate2d(diff, value, unit, unit_symbol, err)
subroutine dcdifftimecreater(diff, sec)
subroutine dcdifftimecreate1_bc(diff, year, mon, day, hour, min, sec, day_seconds)
subroutine dcdatetimecreatei(time, sec)
subroutine dcdatetimecreate1(time, year, mon, day, hour, min, sec, zone, zone_hour, zone_min, caltype, caltype_str, day_seconds, sclyear, sclmon, sclday, sclsec, err)
Create DC_DATETIME and DC_DIFFTIME type variables.
subroutine dcdatetimecreated(time, sec)
subroutine dcdifftimecreate2i(diff, value, unit, unit_symbol, err)
subroutine dcdifftimecreate2_bc(diff, value, unit, err)
subroutine dcdifftimecreate1(diff, year, mon, day, hour, min, sec, day_seconds, nondim, sclyear, sclmon, sclday, sclsec)
type(dc_difftime) function dcdatetime_div_fi(diff, denominator)
Functions for user defined operation (/).
type(dc_difftime) function dcdatetime_div_fr(diff, denominator)
real(dp) function dcdatetime_div_ff(diff1, diff2)
type(dc_difftime) function dcdatetime_div_fd(diff, denominator)
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)
Functions for user defined operation (==).
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)
subroutine dcdifftimeeval1(diff, year, mon, day, hour, min, sec, nondim, sclyear, sclmon, sclday, sclsec, sclnondim, err)
type(dc_scaled_sec) function dcdifftimeevalsclsec(diff)
real(dp) function dcdifftimeevalbyunit(diff, unit, unit_symbol)
real(dp) function dcdatetimeevalhour(time)
subroutine dcdatetimeeval1(time, year, mon, day, hour, min, sec, caltype, zone, sclyear, sclmon, sclday, sclsec)
real(dp) function dcdatetimeevalsec(time)
real(dp) function dcdifftimeevalnondim(diff)
real(dp) function dcdatetimeevalday(time)
real(dp) function dcdatetimeevalbyunit(time, unit, unit_symbol)
real(dp) function dcdifftimeevalhour(diff)
real(dp) function dcdifftimeevalmin(diff)
real(dp) function dcdatetimeevalmin(time)
type(dc_scaled_sec) function dcdatetimeevalsclsec(time)
real(dp) function dcdifftimeevalday(diff)
real(dp) function dcdifftimeevalsec(diff)
logical function dcdatetime_ge_tt(time1, time2)
Functions for user defined operation (>=).
logical function dcdatetime_ge_ff(diff1, diff2)
logical function dcdatetime_ge_if(factor, diff)
logical function dcdatetime_ge_fi(diff, factor)
logical function dcdatetime_gt_tt(time1, time2)
Functions for user defined operation (>).
logical function dcdatetime_gt_if(factor, diff)
logical function dcdatetime_gt_fi(diff, factor)
logical function dcdatetime_gt_ff(diff1, diff2)
logical function dcdatetime_le_if(factor, diff)
logical function dcdatetime_le_tt(time1, time2)
Functions for user defined operation (<=).
logical function dcdatetime_le_ff(diff1, diff2)
logical function dcdatetime_le_fi(diff, factor)
logical function dcdatetime_lt_ff(diff1, diff2)
logical function dcdatetime_lt_if(factor, diff)
logical function dcdatetime_lt_fi(diff, factor)
logical function dcdatetime_lt_tt(time1, time2)
Functions for user defined operation (<).
type(dc_datetime) function dcdatetime_max_tt(time1, time2)
User defined function "max".
type(dc_difftime) function dcdatetime_max_ff(diff1, diff2)
type(dc_difftime) function dcdatetime_min_ff(diff1, diff2)
type(dc_datetime) function dcdatetime_min_tt(time1, time2)
User defined function "min".
type(dc_difftime) function dcdatetime_mod_ff(diff1, diff2)
User defined function "mod".
type(dc_difftime) function dcdatetime_mul_if(factor, diff)
Functions for user defined operation (*).
type(dc_difftime) function dcdatetime_mul_rf(factor, diff)
type(dc_difftime) function dcdatetime_mul_df(factor, diff)
type(dc_difftime) function dcdatetime_mul_fd(diff, factor)
type(dc_difftime) function dcdatetime_mul_fr(diff, factor)
type(dc_difftime) function dcdatetime_mul_fi(diff, factor)
integer function dcdatetimeparseunits(str)
Parse strings that mean units.
subroutine dcdifftimeputline_bc(diff, unit)
subroutine dcdatetimeputline_bc(time, unit)
subroutine dcdatetimesetcaltype(caltype)
Set the calendar type.
subroutine dcdatetimesetsecofday(sec)
Set the number of seconds in a day.
type(dc_difftime) function dcdatetime_sub_fd(diff, sec)
type(dc_datetime) function dcdatetime_sub_tf(time, diff)
Functions for user defined operation (-).
type(dc_difftime) function dcdatetime_sub_ff(diff1, diff2)
type(dc_difftime) function dcdatetime_sub_fi(diff, sec)
type(dc_difftime) function dcdatetime_sub_fr(diff, sec)
type(dc_difftime) function dcdatetime_sub_tt(time1, time2)
character(token) function dcdatetimetocharcal(time, upcase)
character(string) function dcdatetimetochar(time)
Convert DC_DATETIME, DC_DIFFTIME to character strings.
character(string) function dcdifftimetochar(diff)
logical function dcdatetimevalidcaltype(caltype)
Check if calendar type is valid in dc_date_types.
type(dc_difftime) function dcdatetimezonetodiff(zone)
logical function dcdatetimevalidzone(zone)
subroutine dcdatetimesetzone(time, zone, err)
Procedures for timezone handling.
Interface declarations for procedures provided from dc_date.
Derived types and parameters for date and time.
Judge optional control parameters.
logical function, public present_and_not_empty(arg)
Scaled seconds module for precise time operations.
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public token
Character length for word, token
Definition dc_types.f90:128
integer, parameter, public string
Character length for string
Definition dc_types.f90:137
integer, parameter, public dp
Double Precision Real number
Definition dc_types.f90:92