Line data Source code
1 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3 : !!!! !!!!
4 : !!!! ParaMonte: Parallel Monte Carlo and Machine Learning Library. !!!!
5 : !!!! !!!!
6 : !!!! Copyright (C) 2012-present, The Computational Data Science Lab !!!!
7 : !!!! !!!!
8 : !!!! This file is part of the ParaMonte library. !!!!
9 : !!!! !!!!
10 : !!!! LICENSE !!!!
11 : !!!! !!!!
12 : !!!! https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md !!!!
13 : !!!! !!!!
14 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15 : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16 :
17 : !> \brief
18 : !> This file contains procedure implementations of [pm_dateTime](@ref pm_dateTime).
19 : !>
20 : !> \finmain
21 : !>
22 : !> \author
23 : !> \AmirShahmoradi, March 23, 2012, 5:33 PM, National Institute for Fusion Studies, The University of Texas at Austin
24 :
25 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26 :
27 : submodule (pm_dateTime) routines
28 :
29 : use pm_val2str, only: getStr
30 : #if CHECK_ENABLED
31 : use pm_err, only: getFine
32 : use pm_err, only: setAsserted
33 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) \
34 : call setAsserted(ASSERTION,getFine(__FILE__,LINE)//MODULE_NAME//MSG);
35 : #else
36 : #define CHECK_ASSERTION(LINE,ASSERTION,MSG) continue;
37 : #endif
38 :
39 : implicit none
40 :
41 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
42 :
43 : contains
44 :
45 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46 :
47 : #define isValidZone_ENABLED 1
48 :
49 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50 :
51 : #define isValidZone_IK_ENABLED 1
52 :
53 295524 : module procedure isValidZone_IK
54 : use pm_kind, only: IKC => IK
55 : #include "pm_dateTime@routines.inc.F90"
56 295524 : end procedure
57 :
58 : !#if IK5_ENABLED
59 : ! module procedure isValidZone_IK5
60 : ! use pm_kind, only: IKC => IK5
61 : !#include "pm_dateTime@routines.inc.F90"
62 : ! end procedure
63 : !#endif
64 : !
65 : !#if IK4_ENABLED
66 : ! module procedure isValidZone_IK4
67 : ! use pm_kind, only: IKC => IK4
68 : !#include "pm_dateTime@routines.inc.F90"
69 : ! end procedure
70 : !#endif
71 : !
72 : !#if IK3_ENABLED
73 : ! module procedure isValidZone_IK3
74 : ! use pm_kind, only: IKC => IK3
75 : !#include "pm_dateTime@routines.inc.F90"
76 : ! end procedure
77 : !#endif
78 : !
79 : !#if IK2_ENABLED
80 : ! module procedure isValidZone_IK2
81 : ! use pm_kind, only: IKC => IK2
82 : !#include "pm_dateTime@routines.inc.F90"
83 : ! end procedure
84 : !#endif
85 : !
86 : !#if IK1_ENABLED
87 : ! module procedure isValidZone_IK1
88 : ! use pm_kind, only: IKC => IK1
89 : !#include "pm_dateTime@routines.inc.F90"
90 : ! end procedure
91 : !#endif
92 :
93 : #undef isValidZone_IK_ENABLED
94 :
95 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
96 :
97 : #undef isValidZone_ENABLED
98 :
99 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
100 :
101 1 : module procedure getZoneAbbrC
102 1 : abbr = getZoneAbbr(getZone())
103 1 : end procedure
104 :
105 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
106 :
107 1269 : module procedure getZoneAbbrZ
108 : use pm_arraySort, only: isAscending ! LCOV_EXCL_LINE
109 : use pm_arraySearch, only: getBin
110 : use pm_kind, only: SKC => SK
111 : integer(IK) :: bin
112 1269 : CHECK_ASSERTION(__LINE__, isAscending(timeZone%zone), SK_"@getZoneAbbr(): The condition `isAscending(timeZone%zone)` must hold. timeZone%zone = "//getStr(timeZone%zone)) ! fpp
113 1269 : bin = getBin(timeZone%zone, zone) ! we cannot use `findloc()` intrinsic because the time and zone may not be in the constant timezone.
114 1269 : if (0_IK < bin .and. bin < size(timeZone%zone, kind = IK)) then
115 1266 : abbr = trim(timeZone%Abbr(bin))
116 3 : elseif (zone == int(14 * 60, kind(zone))) then
117 0 : abbr = trim(timeZone%Abbr(size(timeZone%zone, kind = IK)))
118 : else
119 3 : abbr = SKC_""
120 : end if
121 1269 : end procedure
122 :
123 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
124 :
125 3 : module procedure getHour12C
126 : use pm_kind, only: IKC => IK
127 3 : hour12 = getHour12(getHour())
128 3 : end procedure
129 :
130 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
131 :
132 2683 : module procedure getHour12H
133 : use pm_kind, only: IKC => IK
134 2683 : CHECK_ASSERTION(__LINE__, 0_IKC <= hour .and. hour <= 24_IKC, SK_"@getHour12(): The condition `0_IKC <= hour .and. hour <= 24_IKC` must hold. hour = "//getStr(hour)) ! fpp
135 2683 : if (12_IKC < hour) then
136 1278 : hour12 = hour - 12_IKC
137 1405 : elseif (0_IKC < hour) then
138 : hour12 = hour
139 : else
140 : hour12 = 12_IKC
141 : end if
142 2683 : end procedure
143 :
144 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
145 :
146 1011 : module procedure getCountDaysInYear
147 : use pm_kind, only: IKC => IK
148 1011 : if (isLeapYear(year)) then
149 : countDays = 366_IKC
150 : else
151 : countDays = 365_IKC
152 : end if
153 1011 : end procedure
154 :
155 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
156 :
157 1560 : module procedure getCountDaysInMonth
158 : use pm_kind, only: IKC => IK
159 4680 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month), SK_"@getCountDays(): The input `year` and `month` must be a valid Gregorian date. year, month = "//getStr([year, month])) ! fpp
160 1560 : if (isLeapYear(year)) then
161 413 : countDays = DAYS_OF_MONTH_LEAP(month)
162 : else
163 1147 : countDays = DAYS_OF_MONTH(month)
164 : end if
165 1560 : end procedure
166 :
167 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
168 :
169 4605 : module procedure getCountWeeksInYear
170 : use pm_kind, only: IKC => IK
171 : integer(IKC) :: weekDayDec31Current, weekDayDec31Previous
172 : !weekDayDec31 = modulo(year + floor(0.25 * year, IKC) - floor(0.01 * year, IKC) + floor(0.0025 * year, IKC)), 7_IKC)
173 4605 : weekDayDec31Current = getWeekDayISO(year, 12_IKC, 31_IKC)
174 4605 : weekDayDec31Previous = getWeekDayISO(year - 1_IKC, 12_IKC, 31_IKC)
175 4605 : if (weekDayDec31Current == 4_IKC .or. weekDayDec31Previous == 3_IKC) then ! current year ends Thursday or previous year ends Wednesday.
176 : countWeeks = 53_IKC
177 : else
178 : countWeeks = 52_IKC
179 : end if
180 4605 : end procedure
181 :
182 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
183 :
184 549 : module procedure getCountWeeksInMonth
185 : use pm_kind, only: IKC => IK
186 : integer(IKC) :: countDays, weekdayStartISO
187 1647 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month), SK_"@getCountWeeks(): The input `year` and `month` must be a valid Gregorian date. year, month = "//getStr([year, month])) ! fpp
188 549 : weekdayStartISO = getWeekDayISO(year, month, 1_IKC)
189 549 : countDays = getCountDays(year, month)
190 549 : if (countDays == 31_IKC) then
191 329 : if (weekdayStartISO < 2_IKC .or. weekdayStartISO > 4_IKC) then
192 : countWeeks = 4_IKC
193 : else
194 : countWeeks = 5_IKC
195 : end if
196 220 : elseif (countDays == 30_IKC) then
197 176 : if (weekdayStartISO < 3_IKC .or. weekdayStartISO > 4_IKC) then
198 : countWeeks = 4_IKC
199 : else
200 : countWeeks = 5_IKC
201 : end if
202 44 : elseif (countDays == 28_IKC) then
203 : countWeeks = 4_IKC
204 12 : elseif (countDays == 29_IKC) then
205 12 : if (weekdayStartISO /= 4_IKC) then
206 : countWeeks = 4_IKC
207 : else
208 : countWeeks = 5_IKC
209 : end if
210 : end if
211 549 : end procedure
212 :
213 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
214 :
215 11 : module procedure getWeekDayCurrent
216 : integer(IK) :: Values(8)
217 11 : call date_and_time(values = Values)
218 99 : CHECK_ASSERTION(__LINE__, all(Values /= -huge(0_IK)), SK_"@getWeekDay(): The processor does not possess a clock.")
219 11 : weekday = getWeekDay(year = Values(1), month = Values(2), day = Values(3))
220 11 : end procedure
221 :
222 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
223 :
224 7 : module procedure getWeekDayValues
225 7 : CHECK_ASSERTION(__LINE__, size(Values) > 2, SK_"@getWeekDay(): The condition `size(Values) > 2` must hold. size(Values) = "//getStr(size(Values)))
226 7 : CHECK_ASSERTION(__LINE__, size(Values) < 9, SK_"@getWeekDay(): The condition `size(Values) < 9` must hold. size(Values) = "//getStr(size(Values)))
227 7 : weekday = getWeekDay(year = Values(1), month = Values(2), day = Values(3))
228 7 : end procedure
229 :
230 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
231 :
232 20287 : module procedure getWeekDayTriple
233 : use pm_kind, only: RKC => RK, IKC => IK
234 : !integer(IK) :: century
235 : !integer(IK) :: month_
236 : !integer(IK) :: year_
237 81148 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month, day), SK_"@getWeekDay(): The input [year, month, day] must correspond to a valid Gregorian date. year, month, day = "//getStr([year, month, day]))
238 20287 : weekday = modulo(floor(getJulianDay(year, month, day) + 1.5_RKC, IKC), 7_IKC)
239 : !if (month > 2_IK) then
240 : ! month_ = month + 1_IK
241 : ! year_ = year
242 : !else
243 : ! month_ = month + 13_IK
244 : ! year_ = year - 1_IK
245 : !end if
246 : !century = year_ / 100_IK
247 : !year_ = year_ - century * 100_IK
248 : !weekday = modulo(day + int(2.6 * real(month_), IK) + year_ + year_ / 4_IK + century / 4_IK - 2_IK * century, 7_IK)
249 20287 : end procedure
250 :
251 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
252 :
253 4 : module procedure getWeekYearCurrent
254 : use pm_kind, only: IKC => IK
255 : integer(IKC) :: WeekDate(3)
256 4 : WeekDate(1:3) = getWeekDate()
257 4 : weekYear = WeekDate(1)
258 4 : end procedure
259 :
260 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261 :
262 2683 : module procedure getWeekYearValues
263 : use pm_kind, only: IKC => IK
264 : integer(IKC) :: WeekDate(3)
265 2683 : WeekDate(1:3) = getWeekDate(Values)
266 2683 : weekYear = WeekDate(1)
267 2683 : end procedure
268 :
269 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
270 :
271 209 : module procedure getWeekYearTriple
272 : use pm_kind, only: IKC => IK
273 : integer(IKC) :: WeekDate(3)
274 209 : WeekDate(1:3) = getWeekDate(year, month, day)
275 209 : weekYear = WeekDate(1)
276 209 : end procedure
277 :
278 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
279 :
280 7 : module procedure getWeekDateCurrent
281 : integer(IK) :: Values(8)
282 7 : call date_and_time(values = Values)
283 63 : CHECK_ASSERTION(__LINE__, all(Values /= -huge(0_IK)), SK_"@getWeekDate(): The processor does not possess a clock.")
284 7 : WeekDate(1:3) = getWeekDate(year = Values(1), month = Values(2), day = Values(3))
285 7 : end procedure
286 :
287 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
288 :
289 2894 : module procedure getWeekDateValues
290 2894 : CHECK_ASSERTION(__LINE__, size(Values) > 2, SK_"@getWeekDate(): The condition `size(Values) > 2` must hold. size(Values) = "//getStr(size(Values)))
291 2894 : CHECK_ASSERTION(__LINE__, size(Values) < 9, SK_"@getWeekDate(): The condition `size(Values) < 9` must hold. size(Values) = "//getStr(size(Values)))
292 2894 : WeekDate(1:3) = getWeekDate(year = Values(1), month = Values(2), day = Values(3))
293 2894 : end procedure
294 :
295 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
296 :
297 3128 : module procedure getWeekDateTriple
298 : use pm_kind, only: IKC => IK
299 12512 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month, day), SK_"@getWeekDate(): The input [year, month, day] must correspond to a valid Gregorian date. year, month, day = "//getStr([year, month, day]))
300 3128 : WeekDate(1) = year
301 3128 : WeekDate(3) = getWeekDayISO(year, month, day)
302 3128 : WeekDate(2) = (10_IK + getOrdinalDay(year, month, day) - WeekDate(3)) / 7_IK
303 3128 : if (WeekDate(2) == 0_IK) then
304 23 : WeekDate(1) = year - 1_IK
305 23 : WeekDate(2) = getCountWeeks(WeekDate(1))
306 3105 : elseif (WeekDate(2) > getCountWeeks(year)) then
307 13 : WeekDate(1) = year + 1_IK
308 13 : WeekDate(2) = 1_IK
309 : end if
310 3128 : end procedure
311 :
312 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
313 :
314 8 : module procedure getWeekDayISOCurrent
315 : integer(IK) :: Values(8)
316 8 : call date_and_time(values = Values)
317 8 : weekday = getWeekDayISO(year = Values(1), month = Values(2), day = Values(3))
318 8 : end procedure
319 :
320 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
321 :
322 7 : module procedure getWeekDayISOValues
323 7 : weekday = getWeekDayISO(year = Values(1), month = Values(2), day = Values(3))
324 7 : end procedure
325 :
326 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
327 :
328 18882 : module procedure getWeekDayISOTriple
329 18882 : weekday = getWeekDay(year, month, day)
330 18882 : if (weekday == 0_IK) weekday = 7_IK
331 18882 : end procedure
332 :
333 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
334 :
335 110 : module procedure getCountLeapYears
336 : integer(IK) :: year
337 : !CHECK_ASSERTION(__LINE__, until /= 0_IK, SK_"@getCountLeapYears(): The condition `until /= 0` must hold. until = "//getStr(until))
338 110 : if (until > 0_IK) then
339 : year = until
340 : else
341 52 : year = until - 4_IK
342 : end if
343 110 : countLeapYear = year / 4_IK - year / 100_IK + year / 400_IK
344 110 : end procedure
345 :
346 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
347 :
348 31 : module procedure getCountLeapYearsSince
349 : !CHECK_ASSERTION(__LINE__, until /= 0_IK, SK_"@getCountLeapYearsSince(): The condition `until /= 0` must hold. until = "//getStr(until))
350 : !CHECK_ASSERTION(__LINE__, since /= 0_IK, SK_"@getCountLeapYearsSince(): The condition `since /= 0` must hold. since = "//getStr(since))
351 93 : CHECK_ASSERTION(__LINE__, since <= until, SK_"@getCountLeapYears(): The condition `since <= until` must hold. since, until = "//getStr([since, until]))
352 31 : countLeapYear = getCountLeapYears(until) - getCountLeapYears(since)
353 31 : if (since > 0_IK .and. until > 0_IK) then
354 9 : if (isLeapYear(since)) countLeapYear = countLeapYear + 1_IK
355 22 : elseif (since <= 0_IK .and. until <= 0_IK) then
356 12 : if (isLeapYear(until)) countLeapYear = countLeapYear + 1_IK
357 : end if
358 31 : end procedure
359 :
360 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
361 :
362 1 : module procedure isLastDayInMonthC
363 1 : lastDayInMonth = isLastDayInMonth(getDateTime())
364 1 : end procedure
365 :
366 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
367 :
368 3 : module procedure isLastDayInMonthValues
369 3 : CHECK_ASSERTION(__LINE__, size(Values) > 2, SK_"@isLastDayInMonth(): The condition `size(Values) > 2` must hold. size(Values) = "//getStr(size(Values)))
370 3 : CHECK_ASSERTION(__LINE__, size(Values) < 9, SK_"@isLastDayInMonth(): The condition `size(Values) < 9` must hold. size(Values) = "//getStr(size(Values)))
371 3 : lastDayInMonth = isLastDayInMonth(year = Values(1), month = Values(2), day = Values(3))
372 3 : end procedure
373 :
374 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
375 :
376 101814 : module procedure isLastDayInMonthTriple
377 407256 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month, day), SK_"@isLastDayInMonth(): The input [year, month, day] must correspond to a valid Gregorian date. year, month, day = "//getStr([year, month, day]))
378 101814 : if (month /= 2_IK) then
379 : lastDayInMonth = logical((month == 1_IK .and. day == 31_IK) & ! LCOV_EXCL_LINE
380 : .or. (month == 3_IK .and. day == 31_IK) & ! LCOV_EXCL_LINE
381 : .or. (month == 4_IK .and. day == 30_IK) & ! LCOV_EXCL_LINE
382 : .or. (month == 5_IK .and. day == 31_IK) & ! LCOV_EXCL_LINE
383 : .or. (month == 6_IK .and. day == 30_IK) & ! LCOV_EXCL_LINE
384 : .or. (month == 7_IK .and. day == 31_IK) & ! LCOV_EXCL_LINE
385 : .or. (month == 8_IK .and. day == 31_IK) & ! LCOV_EXCL_LINE
386 : .or. (month == 9_IK .and. day == 30_IK) & ! LCOV_EXCL_LINE
387 : .or. (month == 10_IK .and. day == 31_IK) & ! LCOV_EXCL_LINE
388 : .or. (month == 11_IK .and. day == 30_IK) & ! LCOV_EXCL_LINE
389 96973 : .or. (month == 12_IK .and. day == 31_IK), LK)
390 : else
391 4841 : if (isLeapYear(year)) then
392 1234 : lastDayInMonth = logical(day == 29_IK, LK)
393 : else
394 3607 : lastDayInMonth = logical(day == 28_IK, LK)
395 : end if
396 : end if
397 101814 : end procedure
398 :
399 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
400 :
401 1 : module procedure getDateAfterC
402 1 : DateAfter(1:3) = getDateAfter(getDateTime())
403 1 : end procedure
404 :
405 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
406 :
407 30003 : module procedure getDateAfterValues
408 30003 : CHECK_ASSERTION(__LINE__, size(Values) > 2, SK_"@getDateAfter(): The condition `size(Values) > 2` must hold. size(Values) = "//getStr(size(Values)))
409 30003 : CHECK_ASSERTION(__LINE__, size(Values) < 9, SK_"@getDateAfter(): The condition `size(Values) < 9` must hold. size(Values) = "//getStr(size(Values)))
410 30003 : DateAfter(1:3) = getDateAfter(year = Values(1), month = Values(2), day = Values(3))
411 30003 : end procedure
412 :
413 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
414 :
415 81808 : module procedure getDateAfterTriple
416 : use pm_kind, only: IKC => IK
417 327232 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month, day), SK_"@getDateAfter(): The input [year, month, day] must correspond to a valid Gregorian date. year, month, day = "//getStr([year, month, day]))
418 81808 : if (isLastDayInMonth(year, month, day)) then
419 1380 : if (month < 12_IK) then
420 1245 : DateAfter(1) = year
421 1245 : DateAfter(2) = month + 1_IK
422 1245 : DateAfter(3) = 1_IK
423 : else
424 135 : DateAfter(1) = year + 1_IKC
425 : !if (year /= -1_IKC) then
426 : ! DateAfter(1) = year + 1_IKC
427 : !else
428 : ! DateAfter(1) = 1_IKC
429 : !end if
430 135 : DateAfter(2) = 1_IK
431 135 : DateAfter(3) = 1_IK
432 : end if
433 : else
434 80428 : DateAfter(1) = year
435 80428 : DateAfter(2) = month
436 80428 : DateAfter(3) = day + 1_IK
437 : end if
438 81808 : end procedure
439 :
440 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
441 :
442 1 : module procedure getDateBeforeC
443 1 : DateBefore(1:3) = getDateBefore(getDateTime())
444 1 : end procedure
445 :
446 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
447 :
448 20003 : module procedure getDateBeforeValues
449 20003 : CHECK_ASSERTION(__LINE__, size(Values) > 2, SK_"@getDateBefore(): The condition `size(Values) > 2` must hold. size(Values) = "//getStr(size(Values)))
450 20003 : CHECK_ASSERTION(__LINE__, size(Values) < 9, SK_"@getDateBefore(): The condition `size(Values) < 9` must hold. size(Values) = "//getStr(size(Values)))
451 20003 : DateBefore(1:3) = getDateBefore(year = Values(1), month = Values(2), day = Values(3))
452 20003 : end procedure
453 :
454 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
455 :
456 50192 : module procedure getDateBeforeTriple
457 : use pm_kind, only: IKC => IK
458 200768 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month, day), SK_"@getDateBefore(): The input [year, month, day] must correspond to a valid Gregorian date. year, month, day = "//getStr([year, month, day]))
459 50192 : if (day > 1_IKC) then
460 49202 : DateBefore(1) = year
461 49202 : DateBefore(2) = month
462 49202 : DateBefore(3) = day - 1_IKC
463 : else
464 990 : if (month > 1_IKC) then
465 893 : DateBefore(1) = year
466 893 : DateBefore(2) = month - 1_IKC
467 893 : if (isLeapYear(year)) then
468 203 : DateBefore(3) = DAYS_OF_MONTH_LEAP(DateBefore(2))
469 : else
470 690 : DateBefore(3) = DAYS_OF_MONTH(DateBefore(2))
471 : end if
472 : else ! month == 1_IKC
473 : !if (year /= 1_IKC) then
474 : ! DateBefore(1) = year - 1_IKC
475 : !else
476 : ! DateBefore(1) = -1_IKC ! leap year
477 : !end if
478 97 : DateBefore(1) = year - 1_IKC
479 97 : DateBefore(2) = 12_IKC
480 97 : DateBefore(3) = 31_IKC ! December always has 31 days.
481 : end if
482 : end if
483 50192 : end procedure
484 :
485 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
486 :
487 3 : module procedure getOrdinalDayCurrent
488 : integer(IK) :: Values(8)
489 3 : call date_and_time(values = Values)
490 3 : ordinalDay = getOrdinalDay(year = Values(1), month = Values(2), day = Values(3))
491 3 : end procedure
492 :
493 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
494 :
495 11323 : module procedure getOrdinalDayValues
496 11323 : CHECK_ASSERTION(__LINE__, size(Values) > 2, SK_"@getOrdinalDay(): The condition `size(Values) > 2` must hold. size(Values) = "//getStr(size(Values)))
497 11323 : CHECK_ASSERTION(__LINE__, size(Values) < 9, SK_"@getOrdinalDay(): The condition `size(Values) < 9` must hold. size(Values) = "//getStr(size(Values)))
498 11323 : ordinalDay = getOrdinalDay(year = Values(1), month = Values(2), day = Values(3))
499 11323 : end procedure
500 :
501 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
502 :
503 25900 : module procedure getOrdinalDayTriple
504 : use pm_kind, only: IKC => IK
505 : integer(IKC), parameter :: CUMULATIVE_MONTH_DAYS(12) = [0_IKC, 31_IKC, 59_IKC, 90_IKC, 120_IKC, 151_IKC, 181_IKC, 212_IKC, 243_IKC, 273_IKC, 304_IKC, 334_IKC]
506 103600 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month, day), SK_"@getOrdinalDay(): The input [year, month, day] must correspond to a valid Gregorian date. year, month, day = "//getStr([year, month, day]))
507 25900 : ordinalDay = CUMULATIVE_MONTH_DAYS(month) + day
508 25900 : if (isLeapYear(year) .and. month > 2_IK) ordinalDay = ordinalDay + 1_IK
509 25900 : end procedure
510 :
511 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
512 :
513 3 : module procedure getWeekNumberCurrent
514 : integer(IK) :: Values(8)
515 3 : call date_and_time(values = Values)
516 3 : weekNumber = getWeekNumber(year = Values(1), month = Values(2), day = Values(3))
517 3 : end procedure
518 :
519 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
520 :
521 18 : module procedure getWeekNumberValues
522 18 : CHECK_ASSERTION(__LINE__, size(Values) > 2, SK_"@getWeekNumber(): The condition `size(Values) > 2` must hold. size(Values) = "//getStr(size(Values)))
523 18 : CHECK_ASSERTION(__LINE__, size(Values) < 9, SK_"@getWeekNumber(): The condition `size(Values) < 9` must hold. size(Values) = "//getStr(size(Values)))
524 18 : weekNumber = getWeekNumber(year = Values(1), month = Values(2), day = Values(3))
525 18 : end procedure
526 :
527 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
528 :
529 1434 : module procedure getWeekNumberTriple
530 : use pm_kind, only: IKC => IK
531 : integer(IKC), parameter :: CUMULATIVE_MONTH_DAYS(12) = [0_IKC, 31_IKC, 59_IKC, 90_IKC, 120_IKC, 151_IKC, 181_IKC, 212_IKC, 243_IKC, 273_IKC, 304_IKC, 334_IKC]
532 5736 : CHECK_ASSERTION(__LINE__, isValidDateTime(year, month, day), SK_"@getWeekNumber(): The input [year, month, day] must correspond to a valid Gregorian date. year, month, day = "//getStr([year, month, day]))
533 1434 : weekNumber = (10_IK + getOrdinalDay(year, month, day) - getWeekDayISO(year, month, day)) / 7_IK
534 1434 : if (weekNumber == 0_IK) then
535 7 : weekNumber = getCountWeeks(year - 1_IK)
536 1427 : elseif (weekNumber > getCountWeeks(year)) then
537 : weekNumber = 1_IK
538 : end if
539 1434 : end procedure
540 :
541 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
542 :
543 15016 : module procedure getDateTimeDiffValues
544 15016 : CHECK_ASSERTION(__LINE__, size(Values1) == 8, SK_"@getDateTimeDiff(): The condition `size(Values1) == 8` must hold. size(Values1) = "//getStr(size(Values1)))
545 15016 : CHECK_ASSERTION(__LINE__, size(Values2) == 8, SK_"@getDateTimeDiff(): The condition `size(Values2) == 8` must hold. size(Values2) = "//getStr(size(Values2)))
546 15016 : if (Values1(4) == Values2(4)) then ! identical timezone.
547 : dateTimeDiff= getJulianDay(Values1(1), Values1(2), Values1(3), 0_IK, Values1(5), Values1(6), Values1(7), Values1(8)) & ! LCOV_EXCL_LINE
548 15011 : - getJulianDay(Values2(1), Values2(2), Values2(3), 0_IK, Values2(5), Values2(6), Values2(7), Values2(8))
549 : else ! different timezones.
550 : dateTimeDiff= getJulianDay(Values1(1), Values1(2), Values1(3), Values1(4), Values1(5), Values1(6), Values1(7), Values1(8)) & ! LCOV_EXCL_LINE
551 5 : - getJulianDay(Values2(1), Values2(2), Values2(3), Values2(4), Values2(5), Values2(6), Values2(7), Values2(8))
552 : end if
553 15016 : end procedure
554 :
555 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
556 :
557 4 : module procedure isMorningCurrent
558 : use pm_kind, only: IKC => IK
559 : integer(IKC) :: Values(8)
560 4 : call date_and_time(values = Values)
561 4 : morning = Values(5) < 12_IKC
562 4 : end procedure
563 :
564 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
565 :
566 2790 : module procedure isMorningZ
567 : use pm_kind, only: IKC => IK
568 2790 : morning = getHour(zone) < 12_IKC
569 2790 : end procedure
570 :
571 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
572 :
573 10625 : module procedure isMorningJD
574 : use pm_kind, only: RKC => RK
575 10625 : morning = logical(julianDay - real(floor(julianDay, IK), RKC) >= 0.5_RKC, LK)
576 10625 : end procedure
577 :
578 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
579 :
580 5311 : module procedure isMorningJDZ
581 : use pm_kind, only: RKC => RK
582 : real(RKC), parameter :: INV_MINUTES_PER_DAY = 1._RKC / MINUTES_PER_DAY
583 5311 : CHECK_ASSERTION(__LINE__, isValidZone(zone), SK_"@isMorning(): The condition `isValidZone(zone)` must hold. zone = "//getStr(zone)) ! fpp
584 5311 : morning = isMorning(julianDay + zone * INV_MINUTES_PER_DAY)
585 5311 : end procedure
586 :
587 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
588 :
589 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
590 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
591 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
592 :
593 : #define getJulianDay_ENABLED 1
594 :
595 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
596 :
597 : #define getJulianDayC_ENABLED 1
598 :
599 3 : module procedure getJulianDayC
600 : use pm_kind, only: IKC => IK, RKC => RK
601 : #include "pm_dateTime@routines.inc.F90"
602 3 : end procedure
603 :
604 : #undef getJulianDayC_ENABLED
605 :
606 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
607 :
608 : #define getJulianDayV_ENABLED 1
609 :
610 119934 : module procedure getJulianDayV
611 : use pm_kind, only: IKC => IK, RKC => RK
612 : #include "pm_dateTime@routines.inc.F90"
613 119934 : end procedure
614 :
615 : #undef getJulianDayV_ENABLED
616 :
617 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
618 :
619 : #define getJulianDayY_ENABLED 1
620 :
621 9 : module procedure getJulianDayY
622 : use pm_kind, only: IKC => IK, RKC => RK
623 : #include "pm_dateTime@routines.inc.F90"
624 9 : end procedure
625 :
626 : #undef getJulianDayY_ENABLED
627 :
628 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
629 :
630 : #define getJulianDayYM_ENABLED 1
631 :
632 9 : module procedure getJulianDayYM
633 : use pm_kind, only: IKC => IK, RKC => RK
634 : #include "pm_dateTime@routines.inc.F90"
635 9 : end procedure
636 :
637 : #undef getJulianDayYM_ENABLED
638 :
639 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
640 :
641 : #define getJulianDayYMD_ENABLED 1
642 :
643 20316 : module procedure getJulianDayYMD
644 : use pm_kind, only: IKC => IK, RKC => RK
645 : #include "pm_dateTime@routines.inc.F90"
646 20316 : end procedure
647 :
648 : #undef getJulianDayYMD_ENABLED
649 :
650 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
651 :
652 : #define getJulianDayYMDZ_ENABLED 1
653 :
654 17 : module procedure getJulianDayYMDZ
655 : use pm_kind, only: IKC => IK, RKC => RK
656 : #include "pm_dateTime@routines.inc.F90"
657 17 : end procedure
658 :
659 : #undef getJulianDayYMDZ_ENABLED
660 :
661 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
662 :
663 : #define getJulianDayYMDZH_ENABLED 1
664 :
665 30 : module procedure getJulianDayYMDZH
666 : use pm_kind, only: IKC => IK, RKC => RK
667 : #include "pm_dateTime@routines.inc.F90"
668 30 : end procedure
669 :
670 : #undef getJulianDayYMDZH_ENABLED
671 :
672 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
673 :
674 : #define getJulianDayYMDZHM_ENABLED 1
675 :
676 27 : module procedure getJulianDayYMDZHM
677 : use pm_kind, only: IKC => IK, RKC => RK
678 : #include "pm_dateTime@routines.inc.F90"
679 27 : end procedure
680 :
681 : #undef getJulianDayYMDZHM_ENABLED
682 :
683 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
684 :
685 : #define getJulianDayYMDZHMS_ENABLED 1
686 :
687 27 : module procedure getJulianDayYMDZHMS
688 : use pm_kind, only: IKC => IK, RKC => RK
689 : #include "pm_dateTime@routines.inc.F90"
690 27 : end procedure
691 :
692 : #undef getJulianDayYMDZHMS_ENABLED
693 :
694 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
695 :
696 : #define getJulianDayYMDZHMSM_ENABLED 1
697 :
698 205019 : module procedure getJulianDayYMDZHMSM
699 : use pm_kind, only: IKC => IK, RKC => RK
700 : #include "pm_dateTime@routines.inc.F90"
701 205019 : end procedure
702 :
703 : #undef getJulianDayYMDZHMSM_ENABLED
704 :
705 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
706 :
707 : #undef getJulianDay_ENABLED
708 :
709 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
710 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
711 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
712 :
713 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
714 :
715 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
716 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
717 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
718 :
719 : #define getDateTimeUTC_ENABLED 1
720 :
721 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
722 :
723 : #define getDateTimeUTCC_ENABLED 1
724 :
725 5 : module procedure getDateTimeUTCC
726 : use pm_kind, only: IKC => IK, RKC => RK
727 : #include "pm_dateTime@routines.inc.F90"
728 5 : end procedure
729 :
730 : #undef getDateTimeUTCC_ENABLED
731 :
732 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
733 :
734 : #define getDateTimeUTCV_ENABLED 1
735 :
736 25000 : module procedure getDateTimeUTCV
737 : use pm_kind, only: IKC => IK, RKC => RK
738 : #include "pm_dateTime@routines.inc.F90"
739 25000 : end procedure
740 :
741 : #undef getDateTimeUTCV_ENABLED
742 :
743 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
744 :
745 : #define getDateTimeUTCYMDZ_ENABLED 1
746 :
747 10002 : module procedure getDateTimeUTCYMDZ
748 : use pm_kind, only: IKC => IK, RKC => RK
749 : #include "pm_dateTime@routines.inc.F90"
750 10002 : end procedure
751 :
752 : #undef getDateTimeUTCYMDZ_ENABLED
753 :
754 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
755 :
756 : #define getDateTimeUTCYMDZH_ENABLED 1
757 :
758 10002 : module procedure getDateTimeUTCYMDZH
759 : use pm_kind, only: IKC => IK, RKC => RK
760 : #include "pm_dateTime@routines.inc.F90"
761 10002 : end procedure
762 :
763 : #undef getDateTimeUTCYMDZH_ENABLED
764 :
765 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
766 :
767 : #define getDateTimeUTCYMDZHM_ENABLED 1
768 :
769 15001 : module procedure getDateTimeUTCYMDZHM
770 : use pm_kind, only: IKC => IK, RKC => RK
771 : #include "pm_dateTime@routines.inc.F90"
772 15001 : end procedure
773 :
774 : #undef getDateTimeUTCYMDZHM_ENABLED
775 :
776 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
777 :
778 : #define getDateTimeUTCYMDZHMS_ENABLED 1
779 :
780 10001 : module procedure getDateTimeUTCYMDZHMS
781 : use pm_kind, only: IKC => IK, RKC => RK
782 : #include "pm_dateTime@routines.inc.F90"
783 10001 : end procedure
784 :
785 : #undef getDateTimeUTCYMDZHMS_ENABLED
786 :
787 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
788 :
789 : #define getDateTimeUTCYMDZHMSM_ENABLED 1
790 :
791 237955 : module procedure getDateTimeUTCYMDZHMSM
792 : use pm_kind, only: IKC => IK, RKC => RK
793 : #include "pm_dateTime@routines.inc.F90"
794 237955 : end procedure
795 :
796 : #undef getDateTimeUTCYMDZHMSM_ENABLED
797 :
798 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
799 :
800 : #undef getDateTimeUTC_ENABLED
801 :
802 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
803 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
804 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
805 :
806 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
807 :
808 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
809 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
810 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
811 :
812 : #define getDateTimeNewZone_ENABLED 1
813 :
814 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
815 :
816 : #define getDateTimeNewZoneC_ENABLED 1
817 :
818 5588 : module procedure getDateTimeNewZoneC
819 : use pm_kind, only: IKC => IK, RKC => RK
820 : #include "pm_dateTime@routines.inc.F90"
821 5588 : end procedure
822 :
823 : #undef getDateTimeNewZoneC_ENABLED
824 :
825 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
826 :
827 : #define getDateTimeNewZoneV_ENABLED 1
828 :
829 27012 : module procedure getDateTimeNewZoneV
830 : use pm_kind, only: IKC => IK, RKC => RK
831 : #include "pm_dateTime@routines.inc.F90"
832 27012 : end procedure
833 :
834 : #undef getDateTimeNewZoneV_ENABLED
835 :
836 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
837 :
838 : #define getDateTimeNewZoneYMDZ_ENABLED 1
839 :
840 10004 : module procedure getDateTimeNewZoneYMDZ
841 : use pm_kind, only: IKC => IK, RKC => RK
842 : #include "pm_dateTime@routines.inc.F90"
843 10004 : end procedure
844 :
845 : #undef getDateTimeNewZoneYMDZ_ENABLED
846 :
847 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
848 :
849 : #define getDateTimeNewZoneYMDZH_ENABLED 1
850 :
851 10007 : module procedure getDateTimeNewZoneYMDZH
852 : use pm_kind, only: IKC => IK, RKC => RK
853 : #include "pm_dateTime@routines.inc.F90"
854 10007 : end procedure
855 :
856 : #undef getDateTimeNewZoneYMDZH_ENABLED
857 :
858 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
859 :
860 : #define getDateTimeNewZoneYMDZHM_ENABLED 1
861 :
862 15004 : module procedure getDateTimeNewZoneYMDZHM
863 : use pm_kind, only: IKC => IK, RKC => RK
864 : #include "pm_dateTime@routines.inc.F90"
865 15004 : end procedure
866 :
867 : #undef getDateTimeNewZoneYMDZHM_ENABLED
868 :
869 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
870 :
871 : #define getDateTimeNewZoneYMDZHMS_ENABLED 1
872 :
873 10002 : module procedure getDateTimeNewZoneYMDZHMS
874 : use pm_kind, only: IKC => IK, RKC => RK
875 : #include "pm_dateTime@routines.inc.F90"
876 10002 : end procedure
877 :
878 : #undef getDateTimeNewZoneYMDZHMS_ENABLED
879 :
880 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
881 :
882 : #define getDateTimeNewZoneYMDZHMSM_ENABLED 1
883 :
884 12598 : module procedure getDateTimeNewZoneYMDZHMSM
885 : use pm_kind, only: IKC => IK, RKC => RK
886 : #include "pm_dateTime@routines.inc.F90"
887 12598 : end procedure
888 :
889 : #undef getDateTimeNewZoneYMDZHMSM_ENABLED
890 :
891 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
892 :
893 : #undef getDateTimeNewZone_ENABLED
894 :
895 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
896 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
897 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
898 :
899 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
900 :
901 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
902 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
903 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
904 :
905 : #define getDateTimeShifted_ENABLED 1
906 :
907 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
908 :
909 : #define getDateTimeShiftedC_ENABLED 1
910 :
911 3 : module procedure getDateTimeShiftedC
912 : use pm_kind, only: IKC => IK, RKC => RK
913 : #include "pm_dateTime@routines.inc.F90"
914 3 : end procedure
915 :
916 : #undef getDateTimeShiftedC_ENABLED
917 :
918 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
919 :
920 : #define getDateTimeShiftedV_ENABLED 1
921 :
922 55041 : module procedure getDateTimeShiftedV
923 : use pm_kind, only: IKC => IK, RKC => RK
924 : #include "pm_dateTime@routines.inc.F90"
925 55041 : end procedure
926 :
927 : #undef getDateTimeShiftedV_ENABLED
928 :
929 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
930 :
931 : #define getDateTimeShiftedY_ENABLED 1
932 :
933 6 : module procedure getDateTimeShiftedY
934 : use pm_kind, only: IKC => IK, RKC => RK
935 : #include "pm_dateTime@routines.inc.F90"
936 6 : end procedure
937 :
938 : #undef getDateTimeShiftedY_ENABLED
939 :
940 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
941 :
942 : #define getDateTimeShiftedYM_ENABLED 1
943 :
944 4 : module procedure getDateTimeShiftedYM
945 : use pm_kind, only: IKC => IK, RKC => RK
946 : #include "pm_dateTime@routines.inc.F90"
947 4 : end procedure
948 :
949 : #undef getDateTimeShiftedYM_ENABLED
950 :
951 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
952 :
953 : #define getDateTimeShiftedYMD_ENABLED 1
954 :
955 7 : module procedure getDateTimeShiftedYMD
956 : use pm_kind, only: IKC => IK, RKC => RK
957 : #include "pm_dateTime@routines.inc.F90"
958 7 : end procedure
959 :
960 : #undef getDateTimeShiftedYMD_ENABLED
961 :
962 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
963 :
964 : #define getDateTimeShiftedYMDZ_ENABLED 1
965 :
966 10016 : module procedure getDateTimeShiftedYMDZ
967 : use pm_kind, only: IKC => IK, RKC => RK
968 : #include "pm_dateTime@routines.inc.F90"
969 10016 : end procedure
970 :
971 : #undef getDateTimeShiftedYMDZ_ENABLED
972 :
973 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
974 :
975 : #define getDateTimeShiftedYMDZH_ENABLED 1
976 :
977 10015 : module procedure getDateTimeShiftedYMDZH
978 : use pm_kind, only: IKC => IK, RKC => RK
979 : #include "pm_dateTime@routines.inc.F90"
980 10015 : end procedure
981 :
982 : #undef getDateTimeShiftedYMDZH_ENABLED
983 :
984 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
985 :
986 : #define getDateTimeShiftedYMDZHM_ENABLED 1
987 :
988 10013 : module procedure getDateTimeShiftedYMDZHM
989 : use pm_kind, only: IKC => IK, RKC => RK
990 : #include "pm_dateTime@routines.inc.F90"
991 10013 : end procedure
992 :
993 : #undef getDateTimeShiftedYMDZHM_ENABLED
994 :
995 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
996 :
997 : #define getDateTimeShiftedYMDZHMS_ENABLED 1
998 :
999 10012 : module procedure getDateTimeShiftedYMDZHMS
1000 : use pm_kind, only: IKC => IK, RKC => RK
1001 : #include "pm_dateTime@routines.inc.F90"
1002 10012 : end procedure
1003 :
1004 : #undef getDateTimeShiftedYMDZHMS_ENABLED
1005 :
1006 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1007 :
1008 : #define getDateTimeShiftedYMDZHMSM_ENABLED 1
1009 :
1010 15033 : module procedure getDateTimeShiftedYMDZHMSM
1011 : use pm_kind, only: IKC => IK, RKC => RK
1012 : #include "pm_dateTime@routines.inc.F90"
1013 15033 : end procedure
1014 :
1015 : #undef getDateTimeShiftedYMDZHMSM_ENABLED
1016 :
1017 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1018 :
1019 : #undef getDateTimeShifted_ENABLED
1020 :
1021 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1022 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1023 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1024 :
1025 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1026 :
1027 : #define isValidDateTime_ENABLED 1
1028 :
1029 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1030 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1031 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1032 :
1033 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1034 :
1035 : #define isValidDateTimeV_ENABLED 1
1036 :
1037 2213 : module procedure isValidDateTimeV
1038 : use pm_kind, only: IKC => IK, SKC => SK
1039 : #include "pm_dateTime@routines.inc.F90"
1040 2213 : end procedure
1041 :
1042 : #undef isValidDateTimeV_ENABLED
1043 :
1044 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1045 :
1046 : #define isValidDateTimeY_ENABLED 1
1047 :
1048 570446 : module procedure isValidDateTimeY
1049 : use pm_kind, only: IKC => IK, SKC => SK
1050 : #include "pm_dateTime@routines.inc.F90"
1051 570446 : end procedure
1052 :
1053 : #undef isValidDateTimeY_ENABLED
1054 :
1055 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1056 :
1057 : #define isValidDateTimeYM_ENABLED 1
1058 :
1059 570043 : module procedure isValidDateTimeYM
1060 : use pm_kind, only: IKC => IK, SKC => SK
1061 : #include "pm_dateTime@routines.inc.F90"
1062 570043 : end procedure
1063 :
1064 : #undef isValidDateTimeYM_ENABLED
1065 :
1066 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1067 :
1068 : #define isValidDateTimeYMD_ENABLED 1
1069 :
1070 567533 : module procedure isValidDateTimeYMD
1071 : use pm_kind, only: IKC => IK, SKC => SK
1072 : #include "pm_dateTime@routines.inc.F90"
1073 567533 : end procedure
1074 :
1075 : #undef isValidDateTimeYMD_ENABLED
1076 :
1077 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1078 :
1079 : #define isValidDateTimeYMDZ_ENABLED 1
1080 :
1081 282565 : module procedure isValidDateTimeYMDZ
1082 : use pm_kind, only: IKC => IK, SKC => SK
1083 : #include "pm_dateTime@routines.inc.F90"
1084 282565 : end procedure
1085 :
1086 : #undef isValidDateTimeYMDZ_ENABLED
1087 :
1088 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1089 :
1090 : #define isValidDateTimeYMDZH_ENABLED 1
1091 :
1092 282164 : module procedure isValidDateTimeYMDZH
1093 : use pm_kind, only: IKC => IK, SKC => SK
1094 : #include "pm_dateTime@routines.inc.F90"
1095 282164 : end procedure
1096 :
1097 : #undef isValidDateTimeYMDZH_ENABLED
1098 :
1099 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1100 :
1101 : #define isValidDateTimeYMDZHM_ENABLED 1
1102 :
1103 281763 : module procedure isValidDateTimeYMDZHM
1104 : use pm_kind, only: IKC => IK, SKC => SK
1105 : #include "pm_dateTime@routines.inc.F90"
1106 281763 : end procedure
1107 :
1108 : #undef isValidDateTimeYMDZHM_ENABLED
1109 :
1110 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1111 :
1112 : #define isValidDateTimeYMDZHMS_ENABLED 1
1113 :
1114 281362 : module procedure isValidDateTimeYMDZHMS
1115 : use pm_kind, only: IKC => IK, SKC => SK
1116 : #include "pm_dateTime@routines.inc.F90"
1117 281362 : end procedure
1118 :
1119 : #undef isValidDateTimeYMDZHMS_ENABLED
1120 :
1121 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1122 :
1123 : #define isValidDateTimeYMDZHMSM_ENABLED 1
1124 :
1125 280961 : module procedure isValidDateTimeYMDZHMSM
1126 : use pm_kind, only: IKC => IK, SKC => SK
1127 : #include "pm_dateTime@routines.inc.F90"
1128 280961 : end procedure
1129 :
1130 : #undef isValidDateTimeYMDZHMSM_ENABLED
1131 :
1132 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1133 :
1134 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1135 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1136 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1137 :
1138 : #undef isValidDateTime_ENABLED
1139 :
1140 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1141 :
1142 : #define getDateTime_ENABLED 1
1143 :
1144 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1145 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1146 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1147 :
1148 : #define getDateTimeValues_ENABLED 1
1149 :
1150 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1151 :
1152 : #define getDateTimeValuesJ_ENABLED 1
1153 :
1154 119016 : module procedure getDateTimeValuesJ
1155 : use pm_kind, only: IKC => IK, RKC => RK
1156 : #include "pm_dateTime@routines.inc.F90"
1157 119016 : end procedure
1158 :
1159 : #undef getDateTimeValuesJ_ENABLED
1160 :
1161 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1162 :
1163 : #define getDateTimeValuesJZ_ENABLED 1
1164 :
1165 1500 : module procedure getDateTimeValuesJZ
1166 : use pm_kind, only: IKC => IK, RKC => RK
1167 : #include "pm_dateTime@routines.inc.F90"
1168 1500 : end procedure
1169 :
1170 : #undef getDateTimeValuesJZ_ENABLED
1171 :
1172 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1173 :
1174 : #define getDateTimeValuesC_ENABLED 1
1175 :
1176 15550 : module procedure getDateTimeValuesC
1177 : use pm_kind, only: IKC => IK, SKC => SK
1178 : #include "pm_dateTime@routines.inc.F90"
1179 15550 : end procedure
1180 :
1181 : #undef getDateTimeValuesC_ENABLED
1182 :
1183 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1184 :
1185 : #define getDateTimeValuesY_ENABLED 1
1186 :
1187 10509 : module procedure getDateTimeValuesY
1188 : use pm_kind, only: IKC => IK, SKC => SK
1189 : #include "pm_dateTime@routines.inc.F90"
1190 10509 : end procedure
1191 :
1192 : #undef getDateTimeValuesY_ENABLED
1193 :
1194 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1195 :
1196 : #define getDateTimeValuesYM_ENABLED 1
1197 :
1198 501 : module procedure getDateTimeValuesYM
1199 : use pm_kind, only: IKC => IK, SKC => SK
1200 : #include "pm_dateTime@routines.inc.F90"
1201 501 : end procedure
1202 :
1203 : #undef getDateTimeValuesYM_ENABLED
1204 :
1205 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1206 :
1207 : #define getDateTimeValuesYMD_ENABLED 1
1208 :
1209 536 : module procedure getDateTimeValuesYMD
1210 : use pm_kind, only: IKC => IK, SKC => SK
1211 : #include "pm_dateTime@routines.inc.F90"
1212 536 : end procedure
1213 :
1214 : #undef getDateTimeValuesYMD_ENABLED
1215 :
1216 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1217 :
1218 : #define getDateTimeValuesYMDZ_ENABLED 1
1219 :
1220 521 : module procedure getDateTimeValuesYMDZ
1221 : use pm_kind, only: IKC => IK, SKC => SK
1222 : #include "pm_dateTime@routines.inc.F90"
1223 521 : end procedure
1224 :
1225 : #undef getDateTimeValuesYMDZ_ENABLED
1226 :
1227 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1228 :
1229 : #define getDateTimeValuesYMDZH_ENABLED 1
1230 :
1231 504 : module procedure getDateTimeValuesYMDZH
1232 : use pm_kind, only: IKC => IK, SKC => SK
1233 : #include "pm_dateTime@routines.inc.F90"
1234 504 : end procedure
1235 :
1236 : #undef getDateTimeValuesYMDZH_ENABLED
1237 :
1238 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1239 :
1240 : #define getDateTimeValuesYMDZHM_ENABLED 1
1241 :
1242 502 : module procedure getDateTimeValuesYMDZHM
1243 : use pm_kind, only: IKC => IK, SKC => SK
1244 : #include "pm_dateTime@routines.inc.F90"
1245 502 : end procedure
1246 :
1247 : #undef getDateTimeValuesYMDZHM_ENABLED
1248 :
1249 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1250 :
1251 : #define getDateTimeValuesYMDZHMS_ENABLED 1
1252 :
1253 501 : module procedure getDateTimeValuesYMDZHMS
1254 : use pm_kind, only: IKC => IK, SKC => SK
1255 : #include "pm_dateTime@routines.inc.F90"
1256 501 : end procedure
1257 :
1258 : #undef getDateTimeValuesYMDZHMS_ENABLED
1259 :
1260 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1261 :
1262 : #define getDateTimeValuesYMDZHMSM_ENABLED 1
1263 :
1264 502 : module procedure getDateTimeValuesYMDZHMSM
1265 : use pm_kind, only: IKC => IK, SKC => SK
1266 : #include "pm_dateTime@routines.inc.F90"
1267 502 : end procedure
1268 :
1269 : #undef getDateTimeValuesYMDZHMSM_ENABLED
1270 :
1271 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1272 :
1273 : #undef getDateTimeValues_ENABLED
1274 :
1275 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1276 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1277 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1278 :
1279 : #define getDateTimeString_ENABLED 1
1280 :
1281 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1282 : !
1283 : !#define getDateTimeStringJ_ENABLED 1
1284 : !
1285 : ! module procedure getDateTimeStringJ
1286 : ! use pm_kind, only: IKC => IK, RKC => RK
1287 : !#include "pm_dateTime@routines.inc.F90"
1288 : ! end procedure
1289 : !
1290 : !#undef getDateTimeStringJ_ENABLED
1291 : !
1292 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1293 : !
1294 : !#define getDateTimeStringJZ_ENABLED 1
1295 : !
1296 : ! module procedure getDateTimeStringJZ
1297 : ! use pm_kind, only: IKC => IK, RKC => RK
1298 : !#include "pm_dateTime@routines.inc.F90"
1299 : ! end procedure
1300 : !
1301 : !#undef getDateTimeStringJZ_ENABLED
1302 : !
1303 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1304 :
1305 : #define getDateTimeStringC_ENABLED 1
1306 :
1307 113 : module procedure getDateTimeStringC
1308 : use pm_kind, only: IKC => IK, SKC => SK
1309 : #include "pm_dateTime@routines.inc.F90"
1310 113 : end procedure
1311 :
1312 : #undef getDateTimeStringC_ENABLED
1313 :
1314 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1315 :
1316 : #define getDateTimeStringV_ENABLED 1
1317 :
1318 20138 : module procedure getDateTimeStringV
1319 : use pm_kind, only: IKC => IK, SKC => SK
1320 : #include "pm_dateTime@routines.inc.F90"
1321 20138 : end procedure
1322 :
1323 : #undef getDateTimeStringV_ENABLED
1324 :
1325 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1326 : !
1327 : !#define getDateTimeStringY_ENABLED 1
1328 : !
1329 : ! module procedure getDateTimeStringY
1330 : ! use pm_kind, only: IKC => IK, SKC => SK
1331 : !#include "pm_dateTime@routines.inc.F90"
1332 : ! end procedure
1333 : !
1334 : !#undef getDateTimeStringY_ENABLED
1335 : !
1336 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1337 : !
1338 : !#define getDateTimeStringYM_ENABLED 1
1339 : !
1340 : ! module procedure getDateTimeStringYM
1341 : ! use pm_kind, only: IKC => IK, SKC => SK
1342 : !#include "pm_dateTime@routines.inc.F90"
1343 : ! end procedure
1344 : !
1345 : !#undef getDateTimeStringYM_ENABLED
1346 : !
1347 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1348 : !
1349 : !#define getDateTimeStringYMD_ENABLED 1
1350 : !
1351 : ! module procedure getDateTimeStringYMD
1352 : ! use pm_kind, only: IKC => IK, SKC => SK
1353 : !#include "pm_dateTime@routines.inc.F90"
1354 : ! end procedure
1355 : !
1356 : !#undef getDateTimeStringYMD_ENABLED
1357 : !
1358 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1359 : !
1360 : !#define getDateTimeStringYMDZ_ENABLED 1
1361 : !
1362 : ! module procedure getDateTimeStringYMDZ
1363 : ! use pm_kind, only: IKC => IK, SKC => SK
1364 : !#include "pm_dateTime@routines.inc.F90"
1365 : ! end procedure
1366 : !
1367 : !#undef getDateTimeStringYMDZ_ENABLED
1368 : !
1369 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1370 : !
1371 : !#define getDateTimeStringYMDZH_ENABLED 1
1372 : !
1373 : ! module procedure getDateTimeStringYMDZH
1374 : ! use pm_kind, only: IKC => IK, SKC => SK
1375 : !#include "pm_dateTime@routines.inc.F90"
1376 : ! end procedure
1377 : !
1378 : !#undef getDateTimeStringYMDZH_ENABLED
1379 : !
1380 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1381 : !
1382 : !#define getDateTimeStringYMDZHM_ENABLED 1
1383 : !
1384 : ! module procedure getDateTimeStringYMDZHM
1385 : ! use pm_kind, only: IKC => IK, SKC => SK
1386 : !#include "pm_dateTime@routines.inc.F90"
1387 : ! end procedure
1388 : !
1389 : !#undef getDateTimeStringYMDZHM_ENABLED
1390 : !
1391 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1392 : !
1393 : !#define getDateTimeStringYMDZHMS_ENABLED 1
1394 : !
1395 : ! module procedure getDateTimeStringYMDZHMS
1396 : ! use pm_kind, only: IKC => IK, SKC => SK
1397 : !#include "pm_dateTime@routines.inc.F90"
1398 : ! end procedure
1399 : !
1400 : !#undef getDateTimeStringYMDZHMS_ENABLED
1401 : !
1402 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1403 : !
1404 : !#define getDateTimeStringYMDZHMSM_ENABLED 1
1405 : !
1406 : ! module procedure getDateTimeStringYMDZHMSM
1407 : ! use pm_kind, only: IKC => IK, SKC => SK
1408 : !#include "pm_dateTime@routines.inc.F90"
1409 : ! end procedure
1410 : !
1411 : !#undef getDateTimeStringYMDZHMSM_ENABLED
1412 : !
1413 : ! !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1414 :
1415 : #undef getDateTimeString_ENABLED
1416 :
1417 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1418 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1419 : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1420 :
1421 : #undef getDateTime_ENABLED
1422 :
1423 : !!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1424 :
1425 : end submodule routines
1426 :
1427 : #undef CHECK_ASSERTION
|