ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_dateTime.F90
Go to the documentation of this file.
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
305
306!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
307
309
310 use pm_kind, only: IK, LK, RK, SK
311
312 implicit none
313
314 !public
315 !private :: queryDateTime
316
317 character(*, SK), parameter :: MODULE_NAME = "@pm_dateTime"
318
319!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
320
321 integer(IK) , parameter :: ZONE_MIN = -12_IK * 60_IK
322#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
323 !DIR$ ATTRIBUTES DLLEXPORT :: ZONE_MIN
324#endif
325
326 integer(IK) , parameter :: ZONE_MAX = +14_IK * 60_IK
327#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
328 !DIR$ ATTRIBUTES DLLEXPORT :: ZONE_MAX
329#endif
330
331!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
332
347 integer(IK) , parameter :: ORIGIN(8) = [integer(IK) :: 1, 1, 1, 0, 0, 0, 0, 0]
348#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
349 !DIR$ ATTRIBUTES DLLEXPORT :: ORIGIN
350#endif
351
352!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
353
382 character(9,SK), parameter :: WEEKDAY_NAME(0:6) = [ "Sunday " &
383 , "Monday " &
384 , "Tuesday " &
385 , "Wednesday" &
386 , "Thursday " &
387 , "Friday " &
388 , "Saturday " &
389 ]
390#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
391 !DIR$ ATTRIBUTES DLLEXPORT :: WEEKDAY_NAME
392#endif
393
394!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
395
421 character(9,SK), parameter :: WEEKDAY_NAME_ISO(1:7) = [ "Monday " &
422 , "Tuesday " &
423 , "Wednesday" &
424 , "Thursday " &
425 , "Friday " &
426 , "Saturday " &
427 , "Sunday " &
428 ]
429#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
430 !DIR$ ATTRIBUTES DLLEXPORT :: WEEKDAY_NAME_ISO
431#endif
432
433!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
434
455 character(*, SK), parameter :: MONTH_NAME(12) = [ "January " &
456 , "February " &
457 , "March " &
458 , "April " &
459 , "May " &
460 , "June " &
461 , "July " &
462 , "August " &
463 , "September" &
464 , "October " &
465 , "November " &
466 , "December " &
467 ]
468#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
469 !DIR$ ATTRIBUTES DLLEXPORT :: MONTH_NAME
470#endif
471
472!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
473
493 integer(IK) , parameter :: DAYS_OF_MONTH(12) = [integer(IK) :: 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
494#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
495 !DIR$ ATTRIBUTES DLLEXPORT :: DAYS_OF_MONTH
496#endif
497
498!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
499
523 integer(IK) , parameter :: DAYS_OF_MONTH_LEAP(12) = [integer(IK) :: 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
524#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
525 !DIR$ ATTRIBUTES DLLEXPORT :: DAYS_OF_MONTH_LEAP
526#endif
527
528!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
529
540 integer(IK) , parameter :: SECONDS_PER_DAY = 86400_IK
541#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
542 !DIR$ ATTRIBUTES DLLEXPORT :: SECONDS_PER_DAY
543#endif
544
545!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
546
557 integer(IK) , parameter :: MINUTES_PER_DAY = 1440_IK
558#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
559 !DIR$ ATTRIBUTES DLLEXPORT :: MINUTES_PER_DAY
560#endif
561
562!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
563
586 real(RK) , parameter :: MEAN_DAYS_PER_MONTH = 0.25_RK * (0.25_RK * sum(DAYS_OF_MONTH) + sum(DAYS_OF_MONTH_LEAP) / 12._RK) ! = 30.4375_RK
587#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
588 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_DAYS_PER_MONTH
589#endif
590
591!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
592
615 real(RK) , parameter :: MEAN_WEEKS_PER_MONTH = MEAN_DAYS_PER_MONTH / 7._RK ! = 4.34821428571428571428571428571429_RK
616#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
617 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_WEEKS_PER_MONTH
618#endif
619
620!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
621
644 real(RK) , parameter :: MEAN_HOURS_PER_MONTH = 24_IK * MEAN_DAYS_PER_MONTH ! = 730.5_RK
645#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
646 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_HOURS_PER_MONTH
647#endif
648
649!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
650
673 real(RK) , parameter :: MEAN_MINUTES_PER_MONTH = 60_IK * MEAN_HOURS_PER_MONTH ! = 43830._RK
674#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
675 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_MINUTES_PER_MONTH
676#endif
677
678!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
679
702 real(RK) , parameter :: MEAN_SECONDS_PER_MONTH = 60_IK * MEAN_MINUTES_PER_MONTH ! = 2629800._RK
703#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
704 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_SECONDS_PER_MONTH
705#endif
706
707!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
708
731 real(RK) , parameter :: MEAN_DAYS_PER_YEAR = 0.25_RK * (3 * 365 + 366) ! = 365.25_RK
732#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
733 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_DAYS_PER_YEAR
734#endif
735
736!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
737
760 real(RK) , parameter :: MEAN_WEEKS_PER_YEAR = MEAN_DAYS_PER_YEAR / 7._RK ! = 52.1785714285714285714285714285714_RK
761#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
762 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_WEEKS_PER_YEAR
763#endif
764
765!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
766
789 real(RK) , parameter :: MEAN_HOURS_PER_YEAR = 24_IK * MEAN_DAYS_PER_YEAR ! = 8766._RK
790#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
791 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_HOURS_PER_YEAR
792#endif
793
794!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
795
818 real(RK) , parameter :: MEAN_MINUTES_PER_YEAR = 60_IK * MEAN_HOURS_PER_YEAR ! = 525960._RK
819#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
820 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_MINUTES_PER_YEAR
821#endif
822
823!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
824
847 real(RK) , parameter :: MEAN_SECONDS_PER_YEAR = 60_IK * MEAN_MINUTES_PER_YEAR ! = 31557600._RK
848#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
849 !DIR$ ATTRIBUTES DLLEXPORT :: MEAN_SECONDS_PER_YEAR
850#endif
851
852!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
853
896 !integer(IK), private:: values(8) = 0_IK ! \private The vector `integer` of default kind \IK of length `8` containing `[year, month, day, zone, hour, minute, millisecond]`.
897 integer(IK) :: year = 1_IK
898 integer(IK) :: month = 1_IK
899 integer(IK) :: day = 1_IK
900 integer(IK) :: zone = 0_IK
902 integer(IK) :: hour = 0_IK
903 integer(IK) :: minute = 0_IK
904 integer(IK) :: second = 0_IK
905 integer(IK) :: millisecond = 0_IK
906 contains
907 procedure, pass :: getValues => getDateTimeIntValues
908 end type
909
910 interface dateTimeInt_type
911 module procedure :: dateTimeInt_typer
912 end interface
913
914!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
915
958 !character(8, SK), private :: date = "00000000" !< \private The scalar `character` of default kind \SK of length `8` containing the Gregorian calendar date in the form `yyyymmdd`.
959 !character(10,SK), private :: time = "0000000000" !< \private The scalar `character` of default kind \SK of length `10` containing the Gregorian calendar date in the form `hhmmss.sss`.
960 !character(4, SK) :: century = "00" !< \public The scalar `character` of default kind \SK of length `2` containing the century of the Gregorian calendar in the form `cc`.
961 character(4, SK) :: year = "0001"
962 character(2, SK) :: month = "01"
963 character(2, SK) :: day = "01"
964 character(5, SK) :: zone = "+0000"
967 character(2, SK) :: hour = "00"
968 character(2, SK) :: minute = "00"
969 character(2, SK) :: second = "00"
970 character(3, SK) :: millisecond = "000"
971 !contains
972 ! procedure, pass :: getDate => getDateTimeStrDate
973 ! procedure, pass :: time => getDateTimeStrTime
974 end type
975
976 interface dateTimeStr_type
977 module procedure :: dateTimeStr_typer
978 end interface
979
980!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
981
982 ! > \brief
983 ! > This is the derived type for containing a given Gregorian calendar date and time in both numeric and string formats.
984 ! >
985 ! > \details
986 ! > This class is a simple container for the values returned by the Fortran intrinsic `date_and_time()`.
987 ! >
988 ! > \interface{DateTime_type}
989 ! > \code{.F90}
990 ! >
991 ! > use pm_dateTime, only: DateTime_type
992 ! > type(DateTime_type) :: DateTime
993 ! >
994 ! > DateTime = DateTime_type( Int = dateTimeInt_type() &
995 ! > , Str = dateTimeStr_type() &
996 ! > )
997 ! >
998 ! > \endcode
999 ! >
1000 ! > \see
1001 ! > [constructDateTime](@ref pm_dateTime::constructDateTime) (class constructor)<br>
1002 ! > [dateTimeInt_type](@ref pm_dateTime::dateTimeInt_type)<br>
1003 ! > [dateTimeStr_type](@ref pm_dateTime::dateTimeStr_type)<br>
1004 ! >
1005 ! > \example{DateTime_type}
1006 ! > \include{lineno} example/pm_dateTime/DateTime_type/main.F90
1007 ! > \compile{DateTime_type}
1008 ! > \output{DateTime_type}
1009 ! > \include{lineno} example/pm_dateTime/DateTime_type/main.out.F90
1010 ! >
1011 ! > \test
1012 ! > [test_pm_dateTime](@ref test_pm_dateTime)
1013 ! >
1014 ! > \final{DateTime_type}
1015 ! >
1016 ! > \author
1017 ! > Amir Shahmoradi, March 22, 2012, 00:00 AM, National Institute for Fusion Studies, The University of Texas Austin<br>
1018 !type :: DateTime_type
1019 ! type(dateTimeInt_type) :: Int !< \public The scalar object of type [dateTimeInt_type](@ref pm_dateTime::dateTimeInt_type) containing the Gregorian calendar date and time in integer format.
1020 ! type(dateTimeStr_type) :: Str !< \public The scalar object of type [dateTimeStr_type](@ref pm_dateTime::dateTimeStr_type) containing the Gregorian calendar date and time in string format.
1021 !end type DateTime_type
1022
1023!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1024
1085 integer(IK) :: Zone(39) = [ -60 * 12 &
1086 , -60 * 11 &
1087 , -60 * 10 &
1088 , -60 * 9 - 30 &
1089 , -60 * 9 &
1090 , -60 * 8 &
1091 , -60 * 7 &
1092 , -60 * 6 &
1093 , -60 * 5 &
1094 , -60 * 3 - 30 &
1095 , -60 * 3 &
1096 , -60 * 2 - 30 &
1097 , -60 * 2 &
1098 , -60 * 1 &
1099 , +60 * 0 &
1100 , +60 * 1 &
1101 , +60 * 2 &
1102 , +60 * 3 &
1103 , +60 * 3 + 30 &
1104 , +60 * 4 &
1105 , +60 * 4 + 30 &
1106 , +60 * 5 &
1107 , +60 * 5 + 30 &
1108 , +60 * 5 + 45 &
1109 , +60 * 6 &
1110 , +60 * 6 + 30 &
1111 , +60 * 7 &
1112 , +60 * 8 &
1113 , +60 * 8 + 45 &
1114 , +60 * 9 &
1115 , +60 * 9 + 30 &
1116 , +60 * 10 &
1117 , +60 * 10 + 30 &
1118 , +60 * 11 &
1119 , +60 * 12 &
1120 , +60 * 12 + 45 &
1121 , +60 * 13 &
1122 , +60 * 13 + 45 &
1123 , +60 * 14 &
1124 ]
1125 character(5,SK) :: Abbr(39) = [ "IDLW " &
1126 , "SST " &
1127 , "HST " &
1128 , "MIT " &
1129 , "AKST " &
1130 , "PST " &
1131 , "MST " &
1132 , "CST " &
1133 , "EST " &
1134 , "NST " &
1135 , "UYT " &
1136 , "NDT " &
1137 , "UYST " &
1138 , "EGT " &
1139 , "UTC " &
1140 , "CET " &
1141 , "EET " &
1142 , "AST " &
1143 , "IRST " &
1144 , "GET " &
1145 , "AFT " &
1146 , "PKT " &
1147 , "IST " &
1148 , "NPT " &
1149 , "BST " &
1150 , "MMT " &
1151 , "THA " &
1152 , "SST " &
1153 , "CWST " &
1154 , "JST " &
1155 , "ACST " &
1156 , "AEST " &
1157 , "LHST " &
1158 , "PONT " &
1159 , "NZST " &
1160 , "CHAST" &
1161 , "TOT " &
1162 , "CHADT" &
1163 , "LINT " &
1164 ]
1165 end type
1166
1184 type(timeZone_type), parameter :: timeZone = timeZone_type()
1185#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1186 !DIR$ ATTRIBUTES DLLEXPORT :: timeZone
1187#endif
1188
1189!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1190
1258 interface getZoneAbbr
1259
1260 module function getZoneAbbrC() result(abbr)
1261#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1262 !DEC$ ATTRIBUTES DLLEXPORT :: getZoneAbbrC
1263#endif
1264 use pm_kind, only: SKG => SK
1265 character(:,SKG), allocatable :: abbr
1266 end function
1267
1268 PURE module function getZoneAbbrZ(zone) result(abbr)
1269#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1270 !DEC$ ATTRIBUTES DLLEXPORT :: getZoneAbbrZ
1271#endif
1272 use pm_kind, only: IKG => IK, SKG => SK
1273 integer(IKG) , intent(in) :: zone
1274 character(:,SKG), allocatable :: abbr
1275 end function
1276
1277 end interface
1278
1279!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1280
1335 interface getHour12
1336
1337 module function getHour12C() result(hour12)
1338#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1339 !DEC$ ATTRIBUTES DLLEXPORT :: getHour12C
1340#endif
1341 use pm_kind, only: IKG => IK
1342 integer(IKG) :: hour12
1343 end function
1344
1345 PURE elemental module function getHour12H(hour) result(hour12)
1346#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1347 !DEC$ ATTRIBUTES DLLEXPORT :: getHour12H
1348#endif
1349 use pm_kind, only: IKG => IK
1350 integer(IKG), intent(in) :: hour
1351 integer(IKG) :: hour12
1352 end function
1353
1354 end interface
1355
1356!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1357
1472
1473 impure module function getJulianDayC() result(julianDay)
1474#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1475 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayC
1476#endif
1477 real(RK) :: julianDay
1478 end function
1479
1480 PURE module function getJulianDayV(values) result(julianDay)
1481#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1482 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayV
1483#endif
1484 integer(IK) , intent(in), contiguous :: values(:)
1485 real(RK) :: julianDay
1486 end function
1487
1488 PURE elemental module function getJulianDayY(year) result(julianDay)
1489#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1490 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayY
1491#endif
1492 integer(IK) , intent(in) :: year
1493 real(RK) :: julianDay
1494 end function
1495
1496 PURE elemental module function getJulianDayYM(year, month) result(julianDay)
1497#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1498 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayYM
1499#endif
1500 integer(IK) , intent(in) :: year, month
1501 real(RK) :: julianDay
1502 end function
1503
1504 PURE elemental module function getJulianDayYMD(year, month, day) result(julianDay)
1505#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1506 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayYMD
1507#endif
1508 integer(IK) , intent(in) :: year, month, day
1509 real(RK) :: julianDay
1510 end function
1511
1512 PURE elemental module function getJulianDayYMDZ(year, month, day, zone) result(julianDay)
1513#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1514 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayYMDZ
1515#endif
1516 integer(IK) , intent(in) :: year, month, day, zone
1517 real(RK) :: julianDay
1518 end function
1519
1520 PURE elemental module function getJulianDayYMDZH(year, month, day, zone, hour) result(julianDay)
1521#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1522 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayYMDZH
1523#endif
1524 integer(IK) , intent(in) :: year, month, day, zone, hour
1525 real(RK) :: julianDay
1526 end function
1527
1528 PURE elemental module function getJulianDayYMDZHM(year, month, day, zone, hour, minute) result(julianDay)
1529#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1530 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayYMDZHM
1531#endif
1532 integer(IK) , intent(in) :: year, month, day, zone, hour, minute
1533 real(RK) :: julianDay
1534 end function
1535
1536 PURE elemental module function getJulianDayYMDZHMS(year, month, day, zone, hour, minute, second) result(julianDay)
1537#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1538 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayYMDZHMS
1539#endif
1540 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second
1541 real(RK) :: julianDay
1542 end function
1543
1544 PURE elemental module function getJulianDayYMDZHMSM(year, month, day, zone, hour, minute, second, millisecond) result(julianDay)
1545#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1546 !DEC$ ATTRIBUTES DLLEXPORT :: getJulianDayYMDZHMSM
1547#endif
1548 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second, millisecond
1549 real(RK) :: julianDay
1550 end function
1551
1552 end interface
1553
1554!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1555
1653
1654 impure module function getDateTimeShiftedC(amount) result(dateTimeShifted)
1655#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1656 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedC
1657#endif
1658 real(RK) , intent(in) :: amount
1659 integer(IK) :: dateTimeShifted(8)
1660 end function
1661
1662 PURE module function getDateTimeShiftedV(amount, values) result(dateTimeShifted)
1663#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1664 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedV
1665#endif
1666 real(RK) , intent(in) :: amount
1667 integer(IK) , intent(in), contiguous :: values(:)
1668 integer(IK) :: dateTimeShifted(8)
1669 end function
1670
1671 PURE module function getDateTimeShiftedY(amount, year) result(dateTimeShifted)
1672#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1673 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedY
1674#endif
1675 real(RK) , intent(in) :: amount
1676 integer(IK) , intent(in) :: year
1677 integer(IK) :: dateTimeShifted(8)
1678 end function
1679
1680 PURE module function getDateTimeShiftedYM(amount, year, month) result(dateTimeShifted)
1681#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1682 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedYM
1683#endif
1684 real(RK) , intent(in) :: amount
1685 integer(IK) , intent(in) :: year, month
1686 integer(IK) :: dateTimeShifted(8)
1687 end function
1688
1689 PURE module function getDateTimeShiftedYMD(amount, year, month, day) result(dateTimeShifted)
1690#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1691 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedYMD
1692#endif
1693 real(RK) , intent(in) :: amount
1694 integer(IK) , intent(in) :: year, month, day
1695 integer(IK) :: dateTimeShifted(8)
1696 end function
1697
1698 PURE module function getDateTimeShiftedYMDZ(amount, year, month, day, zone) result(dateTimeShifted)
1699#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1700 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedYMDZ
1701#endif
1702 real(RK) , intent(in) :: amount
1703 integer(IK) , intent(in) :: year, month, day, zone
1704 integer(IK) :: dateTimeShifted(8)
1705 end function
1706
1707 PURE module function getDateTimeShiftedYMDZH(amount, year, month, day, zone, hour) result(dateTimeShifted)
1708#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1709 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedYMDZH
1710#endif
1711 real(RK) , intent(in) :: amount
1712 integer(IK) , intent(in) :: year, month, day, zone, hour
1713 integer(IK) :: dateTimeShifted(8)
1714 end function
1715
1716 PURE module function getDateTimeShiftedYMDZHM(amount, year, month, day, zone, hour, minute) result(dateTimeShifted)
1717#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1718 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedYMDZHM
1719#endif
1720 real(RK) , intent(in) :: amount
1721 integer(IK) , intent(in) :: year, month, day, zone, hour, minute
1722 integer(IK) :: dateTimeShifted(8)
1723 end function
1724
1725 PURE module function getDateTimeShiftedYMDZHMS(amount, year, month, day, zone, hour, minute, second) result(dateTimeShifted)
1726#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1727 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedYMDZHMS
1728#endif
1729 real(RK) , intent(in) :: amount
1730 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second
1731 integer(IK) :: dateTimeShifted(8)
1732 end function
1733
1734 PURE module function getDateTimeShiftedYMDZHMSM(amount, year, month, day, zone, hour, minute, second, millisecond) result(dateTimeShifted)
1735#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1736 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeShiftedYMDZHMSM
1737#endif
1738 real(RK) , intent(in) :: amount
1739 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second, millisecond
1740 integer(IK) :: dateTimeShifted(8)
1741 end function
1742
1743 end interface
1744
1745!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1746
1812
1813 PURE module function getDateTimeDiffValues(Values1, Values2) result(dateTimeDiff)
1814#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1815 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeDiffValues
1816#endif
1817 integer(IK) , intent(in), contiguous :: Values1(:), Values2(:)
1818 real(RK) :: dateTimeDiff
1819 end function
1820
1821 end interface
1822
1823!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1824
1918
1919 impure module function getDateTimeUTCC() result(DateTimeUTC)
1920#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1921 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCC
1922#endif
1923 integer(IK) :: DateTimeUTC(8)
1924 end function
1925
1926 PURE module function getDateTimeUTCV(values) result(DateTimeUTC)
1927#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1928 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCV
1929#endif
1930 integer(IK) , intent(in), contiguous :: values(:)
1931 integer(IK) :: DateTimeUTC(8)
1932 end function
1933
1934! PURE module function getDateTimeUTCY(year) result(DateTimeUTC)
1935!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1936! !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCY
1937!#endif
1938! integer(IK) , intent(in) :: year
1939! integer(IK) :: DateTimeUTC(8)
1940! end function
1941!
1942! PURE module function getDateTimeUTCYM(year, month) result(DateTimeUTC)
1943!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1944! !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCYM
1945!#endif
1946! integer(IK) , intent(in) :: year, month
1947! integer(IK) :: DateTimeUTC(8)
1948! end function
1949!
1950! PURE module function getDateTimeUTCYMD(year, month, day) result(DateTimeUTC)
1951!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1952! !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCYMD
1953!#endif
1954! integer(IK) , intent(in) :: year, month, day
1955! integer(IK) :: DateTimeUTC(8)
1956! end function
1957
1958 PURE module function getDateTimeUTCYMDZ(year, month, day, zone) result(DateTimeUTC)
1959#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1960 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCYMDZ
1961#endif
1962 integer(IK) , intent(in) :: year, month, day, zone
1963 integer(IK) :: DateTimeUTC(8)
1964 end function
1965
1966 PURE module function getDateTimeUTCYMDZH(year, month, day, zone, hour) result(DateTimeUTC)
1967#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1968 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCYMDZH
1969#endif
1970 integer(IK) , intent(in) :: year, month, day, zone, hour
1971 integer(IK) :: DateTimeUTC(8)
1972 end function
1973
1974 PURE module function getDateTimeUTCYMDZHM(year, month, day, zone, hour, minute) result(DateTimeUTC)
1975#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1976 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCYMDZHM
1977#endif
1978 integer(IK) , intent(in) :: year, month, day, zone, hour, minute
1979 integer(IK) :: DateTimeUTC(8)
1980 end function
1981
1982 PURE module function getDateTimeUTCYMDZHMS(year, month, day, zone, hour, minute, second) result(DateTimeUTC)
1983#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1984 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCYMDZHMS
1985#endif
1986 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second
1987 integer(IK) :: DateTimeUTC(8)
1988 end function
1989
1990 PURE module function getDateTimeUTCYMDZHMSM(year, month, day, zone, hour, minute, second, millisecond) result(DateTimeUTC)
1991#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
1992 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeUTCYMDZHMSM
1993#endif
1994 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second, millisecond
1995 integer(IK) :: DateTimeUTC(8)
1996 end function
1997
1998 end interface
1999
2000!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2001
2098
2099 impure module function getDateTimeNewZoneC(newzone) result(DateTimeNewZone)
2100#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2101 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneC
2102#endif
2103 integer(IK) , intent(in) :: newzone
2104 integer(IK) :: DateTimeNewZone(8)
2105 end function
2106
2107 PURE module function getDateTimeNewZoneV(newzone, values) result(DateTimeNewZone)
2108#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2109 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneV
2110#endif
2111 integer(IK) , intent(in) :: newzone
2112 integer(IK) , intent(in), contiguous :: values(:)
2113 integer(IK) :: DateTimeNewZone(8)
2114 end function
2115
2116! PURE module function getDateTimeNewZoneY(year) result(DateTimeNewZone)
2117!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2118! !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneY
2119!#endif
2120! integer(IK) , intent(in) :: newzone
2121! integer(IK) , intent(in) :: year
2122! integer(IK) :: DateTimeNewZone(8)
2123! end function
2124!
2125! PURE module function getDateTimeNewZoneYM(year, month) result(DateTimeNewZone)
2126!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2127! !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneYM
2128!#endif
2129! integer(IK) , intent(in) :: newzone
2130! integer(IK) , intent(in) :: year, month
2131! integer(IK) :: DateTimeNewZone(8)
2132! end function
2133!
2134! PURE module function getDateTimeNewZoneYMD(year, month, day) result(DateTimeNewZone)
2135!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2136! !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneYMD
2137!#endif
2138! integer(IK) , intent(in) :: newzone
2139! integer(IK) , intent(in) :: year, month, day
2140! integer(IK) :: DateTimeNewZone(8)
2141! end function
2142
2143 PURE module function getDateTimeNewZoneYMDZ(newzone, year, month, day, zone) result(DateTimeNewZone)
2144#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2145 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneYMDZ
2146#endif
2147 integer(IK) , intent(in) :: newzone
2148 integer(IK) , intent(in) :: year, month, day, zone
2149 integer(IK) :: DateTimeNewZone(8)
2150 end function
2151
2152 PURE module function getDateTimeNewZoneYMDZH(newzone, year, month, day, zone, hour) result(DateTimeNewZone)
2153#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2154 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneYMDZH
2155#endif
2156 integer(IK) , intent(in) :: newzone
2157 integer(IK) , intent(in) :: year, month, day, zone, hour
2158 integer(IK) :: DateTimeNewZone(8)
2159 end function
2160
2161 PURE module function getDateTimeNewZoneYMDZHM(newzone, year, month, day, zone, hour, minute) result(DateTimeNewZone)
2162#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2163 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneYMDZHM
2164#endif
2165 integer(IK) , intent(in) :: newzone
2166 integer(IK) , intent(in) :: year, month, day, zone, hour, minute
2167 integer(IK) :: DateTimeNewZone(8)
2168 end function
2169
2170 PURE module function getDateTimeNewZoneYMDZHMS(newzone, year, month, day, zone, hour, minute, second) result(DateTimeNewZone)
2171#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2172 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneYMDZHMS
2173#endif
2174 integer(IK) , intent(in) :: newzone
2175 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second
2176 integer(IK) :: DateTimeNewZone(8)
2177 end function
2178
2179 PURE module function getDateTimeNewZoneYMDZHMSM(newzone, year, month, day, zone, hour, minute, second, millisecond) result(DateTimeNewZone)
2180#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2181 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeNewZoneYMDZHMSM
2182#endif
2183 integer(IK) , intent(in) :: newzone
2184 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second, millisecond
2185 integer(IK) :: DateTimeNewZone(8)
2186 end function
2187
2188 end interface
2189
2190!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2191
2367 interface getDateTime
2368
2369 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2370
2371 PURE module function getDateTimeValuesJ(julianDay) result(values)
2372#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2373 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesJ
2374#endif
2375 real(RK) , intent(in) :: julianDay
2376 integer(IK) :: values(8)
2377 end function
2378
2379 PURE module function getDateTimeValuesJZ(julianDay, zone) result(values)
2380#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2381 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesJZ
2382#endif
2383 real(RK) , intent(in) :: julianDay
2384 integer(IK) , intent(in) :: zone
2385 integer(IK) :: values(8)
2386 end function
2387
2388 impure module function getDateTimeValuesC() result(values)
2389#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2390 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesC
2391#endif
2392 integer(IK) :: values(8)
2393 end function
2394
2395 PURE module function getDateTimeValuesY(year) result(values)
2396#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2397 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesY
2398#endif
2399 integer(IK) , intent(in) :: year
2400 integer(IK) :: values(8)
2401 end function
2402
2403 PURE module function getDateTimeValuesYM(year, month) result(values)
2404#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2405 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesYM
2406#endif
2407 integer(IK) , intent(in) :: year, month
2408 integer(IK) :: values(8)
2409 end function
2410
2411 PURE module function getDateTimeValuesYMD(year, month, day) result(values)
2412#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2413 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesYMD
2414#endif
2415 integer(IK) , intent(in) :: year, month, day
2416 integer(IK) :: values(8)
2417 end function
2418
2419 PURE module function getDateTimeValuesYMDZ(year, month, day, zone) result(values)
2420#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2421 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesYMDZ
2422#endif
2423 integer(IK) , intent(in) :: year, month, day, zone
2424 integer(IK) :: values(8)
2425 end function
2426
2427 PURE module function getDateTimeValuesYMDZH(year, month, day, zone, hour) result(values)
2428#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2429 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesYMDZH
2430#endif
2431 integer(IK) , intent(in) :: year, month, day, zone, hour
2432 integer(IK) :: values(8)
2433 end function
2434
2435 PURE module function getDateTimeValuesYMDZHM(year, month, day, zone, hour, minute) result(values)
2436#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2437 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesYMDZHM
2438#endif
2439 integer(IK) , intent(in) :: year, month, day, zone, hour, minute
2440 integer(IK) :: values(8)
2441 end function
2442
2443 PURE module function getDateTimeValuesYMDZHMS(year, month, day, zone, hour, minute, second) result(values)
2444#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2445 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesYMDZHMS
2446#endif
2447 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second
2448 integer(IK) :: values(8)
2449 end function
2450
2451 PURE module function getDateTimeValuesYMDZHMSM(year, month, day, zone, hour, minute, second, millisecond) result(values)
2452#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2453 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeValuesYMDZHMSM
2454#endif
2455 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second, millisecond
2456 integer(IK) :: values(8)
2457 end function
2458
2459 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2460
2461 impure module function getDateTimeStringC(format) result(string)
2462#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2463 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeStringC
2464#endif
2465 character(*, SK), intent(in) :: format
2466 character(:, SK), allocatable :: string
2467 end function
2468
2469 PURE module function getDateTimeStringV(format, values) result(string)
2470#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2471 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeStringV
2472#endif
2473 character(*, SK), intent(in) :: format
2474 integer(IK) , intent(in), contiguous :: values(:)
2475 character(:, SK), allocatable :: string
2476 end function
2477
2478 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2479
2480 end interface
2481
2482!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2483
2573 interface getWeekDate
2574
2575 impure module function getWeekDateCurrent() result(WeekDate)
2576#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2577 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDateCurrent
2578#endif
2579 integer(IK) :: WeekDate(3)
2580 end function
2581
2582 PURE module function getWeekDateValues(values) result(WeekDate)
2583#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2584 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDateValues
2585#endif
2586 integer(IK) , intent(in), contiguous :: values(:)
2587 integer(IK) :: WeekDate(3)
2588 end function
2589
2590 PURE module function getWeekDateTriple(year, month, day) result(WeekDate)
2591#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2592 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDateTriple
2593#endif
2594 integer(IK) , intent(in) :: year, month, day
2595 integer(IK) :: WeekDate(3)
2596 end function
2597
2598 end interface
2599
2600!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2601
2669 interface getWeekYear
2670
2671 impure module function getWeekYearCurrent() result(weekYear)
2672#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2673 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekYearCurrent
2674#endif
2675 integer(IK) :: weekYear
2676 end function
2677
2678 PURE module function getWeekYearValues(values) result(weekYear)
2679#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2680 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekYearValues
2681#endif
2682 integer(IK) , intent(in), contiguous :: values(:)
2683 integer(IK) :: weekYear
2684 end function
2685
2686 PURE elemental module function getWeekYearTriple(year, month, day) result(weekYear)
2687#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2688 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekYearTriple
2689#endif
2690 integer(IK) , intent(in) :: year, month, day
2691 integer(IK) :: weekYear
2692 end function
2693
2694 end interface
2695
2696!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2697
2796
2797 PURE module function isValidDateTimeV(values) result(isValid)
2798#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2799 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeV
2800#endif
2801 integer(IK) , intent(in), contiguous :: values(:)
2802 logical(LK) :: isValid
2803 end function
2804
2805 PURE elemental module function isValidDateTimeY(year) result(isValid)
2806#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2807 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeY
2808#endif
2809 integer(IK) , intent(in) :: year
2810 logical(LK) :: isValid
2811 end function
2812
2813 PURE elemental module function isValidDateTimeYM(year, month) result(isValid)
2814#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2815 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeYM
2816#endif
2817 integer(IK) , intent(in) :: year, month
2818 logical(LK) :: isValid
2819 end function
2820
2821 PURE elemental module function isValidDateTimeYMD(year, month, day) result(isValid)
2822#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2823 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeYMD
2824#endif
2825 integer(IK) , intent(in) :: year, month, day
2826 logical(LK) :: isValid
2827 end function
2828
2829 PURE elemental module function isValidDateTimeYMDZ(year, month, day, zone) result(isValid)
2830#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2831 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeYMDZ
2832#endif
2833 integer(IK) , intent(in) :: year, month, day, zone
2834 logical(LK) :: isValid
2835 end function
2836
2837 PURE elemental module function isValidDateTimeYMDZH(year, month, day, zone, hour) result(isValid)
2838#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2839 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeYMDZH
2840#endif
2841 integer(IK) , intent(in) :: year, month, day, zone, hour
2842 logical(LK) :: isValid
2843 end function
2844
2845 PURE elemental module function isValidDateTimeYMDZHM(year, month, day, zone, hour, minute) result(isValid)
2846#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2847 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeYMDZHM
2848#endif
2849 integer(IK) , intent(in) :: year, month, day, zone, hour, minute
2850 logical(LK) :: isValid
2851 end function
2852
2853 PURE elemental module function isValidDateTimeYMDZHMS(year, month, day, zone, hour, minute, second) result(isValid)
2854#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2855 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeYMDZHMS
2856#endif
2857 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second
2858 logical(LK) :: isValid
2859 end function
2860
2861 PURE elemental module function isValidDateTimeYMDZHMSM(year, month, day, zone, hour, minute, second, millisecond) result(isValid)
2862#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2863 !DEC$ ATTRIBUTES DLLEXPORT :: isValidDateTimeYMDZHMSM
2864#endif
2865 integer(IK) , intent(in) :: year, month, day, zone, hour, minute, second, millisecond
2866 logical(LK) :: isValid
2867 end function
2868
2869 end interface
2870
2871!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2872
2937
2938 module function isLastDayInMonthC() result(lastDayInMonth)
2939#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2940 !DEC$ ATTRIBUTES DLLEXPORT :: isLastDayInMonthC
2941#endif
2942 logical(LK) :: lastDayInMonth
2943 end function
2944
2945 PURE module function isLastDayInMonthValues(values) result(lastDayInMonth)
2946#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2947 !DEC$ ATTRIBUTES DLLEXPORT :: isLastDayInMonthValues
2948#endif
2949 integer(IK), intent(in), contiguous :: values(:)
2950 logical(LK) :: lastDayInMonth
2951 end function
2952
2953 PURE elemental module function isLastDayInMonthTriple(year, month, day) result(lastDayInMonth)
2954#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
2955 !DEC$ ATTRIBUTES DLLEXPORT :: isLastDayInMonthTriple
2956#endif
2957 integer(IK), intent(in) :: year, month, day
2958 logical(LK) :: lastDayInMonth
2959 end function
2960
2961 end interface
2962
2963!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2964
3029
3030 module function getDateAfterC() result(dateAfter)
3031#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3032 !DEC$ ATTRIBUTES DLLEXPORT :: getDateAfterC
3033#endif
3034 integer(IK) :: dateAfter(3)
3035 end function
3036
3037 PURE module function getDateAfterValues(values) result(dateAfter)
3038#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3039 !DEC$ ATTRIBUTES DLLEXPORT :: getDateAfterValues
3040#endif
3041 integer(IK), intent(in), contiguous :: values(:)
3042 integer(IK) :: dateAfter(3)
3043 end function
3044
3045 PURE module function getDateAfterTriple(year, month, day) result(dateAfter)
3046#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3047 !DEC$ ATTRIBUTES DLLEXPORT :: getDateAfterTriple
3048#endif
3049 integer(IK), intent(in) :: year, month, day
3050 integer(IK) :: dateAfter(3)
3051 end function
3052
3053 end interface
3054
3055!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3056
3121
3122 module function getDateBeforeC() result(dateBefore)
3123#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3124 !DEC$ ATTRIBUTES DLLEXPORT :: getDateBeforeC
3125#endif
3126 integer(IK) :: dateBefore(3)
3127 end function
3128
3129 PURE module function getDateBeforeValues(values) result(dateBefore)
3130#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3131 !DEC$ ATTRIBUTES DLLEXPORT :: getDateBeforeValues
3132#endif
3133 integer(IK), intent(in), contiguous :: values(:)
3134 integer(IK) :: dateBefore(3)
3135 end function
3136
3137 PURE module function getDateBeforeTriple(year, month, day) result(dateBefore)
3138#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3139 !DEC$ ATTRIBUTES DLLEXPORT :: getDateBeforeTriple
3140#endif
3141 integer(IK), intent(in) :: year, month, day
3142 integer(IK) :: dateBefore(3)
3143 end function
3144
3145 end interface
3146
3147!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3148
3224
3225 impure module function getOrdinalDayCurrent() result(ordinalDay)
3226#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3227 !DEC$ ATTRIBUTES DLLEXPORT :: getOrdinalDayCurrent
3228#endif
3229 integer(IK) :: ordinalDay
3230 end function
3231
3232 PURE module function getOrdinalDayValues(values) result(ordinalDay)
3233#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3234 !DEC$ ATTRIBUTES DLLEXPORT :: getOrdinalDayValues
3235#endif
3236 integer(IK), intent(in), contiguous :: values(:)
3237 integer(IK) :: ordinalDay
3238 end function
3239
3240 PURE elemental module function getOrdinalDayTriple(year, month, day) result(ordinalDay)
3241#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3242 !DEC$ ATTRIBUTES DLLEXPORT :: getOrdinalDayTriple
3243#endif
3244 integer(IK), intent(in) :: year, month, day
3245 integer(IK) :: ordinalDay
3246 end function
3247
3248 end interface
3249
3250!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3251
3336
3337 impure module function getWeekNumberCurrent() result(weekNumber)
3338#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3339 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekNumberCurrent
3340#endif
3341 integer(IK) :: weekNumber
3342 end function
3343
3344 PURE module function getWeekNumberValues(values) result(weekNumber)
3345#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3346 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekNumberValues
3347#endif
3348 integer(IK), intent(in), contiguous :: values(:)
3349 integer(IK) :: weekNumber
3350 end function
3351
3352 PURE elemental module function getWeekNumberTriple(year, month, day) result(weekNumber)
3353#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3354 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekNumberTriple
3355#endif
3356 integer(IK), intent(in) :: year, month, day
3357 integer(IK) :: weekNumber
3358 end function
3359
3360 end interface
3361
3362!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3363
3436 interface getWeekDay
3437
3438 impure module function getWeekDayCurrent() result(weekday)
3439#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3440 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDayCurrent
3441#endif
3442 integer(IK) :: weekday
3443 end function
3444
3445 PURE module function getWeekDayValues(values) result(weekday)
3446#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3447 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDayValues
3448#endif
3449 integer(IK), intent(in), contiguous :: values(:)
3450 integer(IK) :: weekday
3451 end function
3452
3453 PURE elemental module function getWeekDayTriple(year, month, day) result(weekday)
3454#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3455 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDayTriple
3456#endif
3457 integer(IK), intent(in) :: year, month, day
3458 integer(IK) :: weekday
3459 end function
3460
3461 end interface
3462
3463!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3464
3544
3545 impure module function getWeekDayISOCurrent() result(weekday)
3546#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3547 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDayISOCurrent
3548#endif
3549 integer(IK) :: weekday
3550 end function
3551
3552 PURE module function getWeekDayISOValues(values) result(weekday)
3553#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3554 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDayISOValues
3555#endif
3556 integer(IK), intent(in), contiguous :: values(:)
3557 integer(IK) :: weekday
3558 end function
3559
3560 PURE elemental module function getWeekDayISOTriple(year, month, day) result(weekday)
3561#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3562 !DEC$ ATTRIBUTES DLLEXPORT :: getWeekDayISOTriple
3563#endif
3564 integer(IK), intent(in) :: year, month, day
3565 integer(IK) :: weekday
3566 end function
3567
3568 end interface
3569
3570!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3571
3629
3630 PURE elemental module function getCountDaysInYear(year) result(countDays)
3631#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3632 !DEC$ ATTRIBUTES DLLEXPORT :: getCountDaysInYear
3633#endif
3634 integer(IK), intent(in) :: year
3635 integer(IK) :: countDays
3636 end function
3637
3638 PURE elemental module function getCountDaysInMonth(year, month) result(countDays)
3639#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3640 !DEC$ ATTRIBUTES DLLEXPORT :: getCountDaysInMonth
3641#endif
3642 integer(IK), intent(in) :: year, month
3643 integer(IK) :: countDays
3644 end function
3645
3646 end interface
3647
3648!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3649
3710
3711 PURE elemental module function getCountWeeksInYear(year) result(countWeeks)
3712#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3713 !DEC$ ATTRIBUTES DLLEXPORT :: getCountWeeksInYear
3714#endif
3715 integer(IK), intent(in) :: year
3716 integer(IK) :: countWeeks
3717 end function
3718
3719 PURE elemental module function getCountWeeksInMonth(year, month) result(countWeeks)
3720#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3721 !DEC$ ATTRIBUTES DLLEXPORT :: getCountWeeksInMonth
3722#endif
3723 integer(IK), intent(in) :: year, month
3724 integer(IK) :: countWeeks
3725 end function
3726
3727 end interface
3728
3729!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3730
3784
3785 PURE elemental module function getCountLeapYears(until) result(countLeapYear)
3786#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3787 !DEC$ ATTRIBUTES DLLEXPORT :: getCountLeapYears
3788#endif
3789 integer(IK), intent(in) :: until
3790 integer(IK) :: countLeapYear
3791 end function
3792
3793 PURE elemental module function getCountLeapYearsSince(until, since) result(countLeapYear)
3794#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3795 !DEC$ ATTRIBUTES DLLEXPORT :: getCountLeapYearsSince
3796#endif
3797 integer(IK), intent(in) :: until
3798 integer(IK), intent(in) :: since
3799 integer(IK) :: countLeapYear
3800 end function
3801
3802 end interface
3803
3804!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3805
3873 interface isMorning
3874
3875 impure module function isMorningCurrent() result(morning)
3876#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3877 !DEC$ ATTRIBUTES DLLEXPORT :: isMorningCurrent
3878#endif
3879 use pm_kind, only: IKG => IK, LKG => LK
3880 logical(LKG) :: morning
3881 end function
3882
3883 impure elemental module function isMorningZ(zone) result(morning)
3884#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3885 !DEC$ ATTRIBUTES DLLEXPORT :: isMorningZ
3886#endif
3887 use pm_kind, only: IKG => IK, LKG => LK
3888 integer(IKG) , intent(in) :: zone
3889 logical(LKG) :: morning
3890 end function
3891
3892 pure elemental module function isMorningJD(julianDay) result(morning)
3893#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3894 !DEC$ ATTRIBUTES DLLEXPORT :: isMorningJD
3895#endif
3896 use pm_kind, only: IKG => IK, LKG => LK, RKG => RK
3897 real(RKG) , intent(in) :: julianDay
3898 logical(LKG) :: morning
3899 end function
3900
3901 PURE elemental module function isMorningJDZ(julianDay, zone) result(morning)
3902#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3903 !DEC$ ATTRIBUTES DLLEXPORT :: isMorningJDZ
3904#endif
3905 use pm_kind, only: IKG => IK, LKG => LK, RKG => RK
3906 real(RKG) , intent(in) :: julianDay
3907 integer(IKG) , intent(in) :: zone
3908 logical(LKG) :: morning
3909 end function
3910
3911 end interface
3912
3913!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3914
3972 interface isValidZone
3973
3974 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3975
3976 pure elemental module function isValidZone_IK(zone) result(isValid)
3977#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3978 !DEC$ ATTRIBUTES DLLEXPORT :: isValidZone_IK
3979#endif
3980 use pm_kind, only: LKG => LK, IKG => IK
3981 integer(IKG), intent(in) :: zone
3982 logical(LKG) :: isValid
3983 end function
3984
3985!#if IK5_ENABLED
3986! pure elemental module function isValidZone_IK5(zone) result(isValid)
3987!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3988! !DEC$ ATTRIBUTES DLLEXPORT :: isValidZone_IK5
3989!#endif
3990! use pm_kind, only: LKG => LK, IKG => IK5
3991! integer(IKG), intent(in) :: zone
3992! logical(LKG) :: isValid
3993! end function
3994!#endif
3995!
3996!#if IK4_ENABLED
3997! pure elemental module function isValidZone_IK4(zone) result(isValid)
3998!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
3999! !DEC$ ATTRIBUTES DLLEXPORT :: isValidZone_IK4
4000!#endif
4001! use pm_kind, only: LKG => LK, IKG => IK4
4002! integer(IKG), intent(in) :: zone
4003! logical(LKG) :: isValid
4004! end function
4005!#endif
4006!
4007!#if IK3_ENABLED
4008! pure elemental module function isValidZone_IK3(zone) result(isValid)
4009!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4010! !DEC$ ATTRIBUTES DLLEXPORT :: isValidZone_IK3
4011!#endif
4012! use pm_kind, only: LKG => LK, IKG => IK3
4013! integer(IKG), intent(in) :: zone
4014! logical(LKG) :: isValid
4015! end function
4016!#endif
4017!
4018!#if IK2_ENABLED
4019! pure elemental module function isValidZone_IK2(zone) result(isValid)
4020!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4021! !DEC$ ATTRIBUTES DLLEXPORT :: isValidZone_IK2
4022!#endif
4023! use pm_kind, only: LKG => LK, IKG => IK2
4024! integer(IKG), intent(in) :: zone
4025! logical(LKG) :: isValid
4026! end function
4027!#endif
4028!
4029!#if IK1_ENABLED
4030! pure elemental module function isValidZone_IK1(zone) result(isValid)
4031!#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4032! !DEC$ ATTRIBUTES DLLEXPORT :: isValidZone_IK1
4033!#endif
4034! use pm_kind, only: LKG => LK, IKG => IK1
4035! integer(IKG), intent(in) :: zone
4036! logical(LKG) :: isValid
4037! end function
4038!#endif
4039
4040 !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4041
4042 end interface
4043
4044!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4045
4046contains
4047
4048#if CHECK_ENABLED
4049#define CHECK_ASSERTION(LINE,ASSERTION,MSG) \
4050block; \
4051use pm_val2str, only: getStr; \
4052use pm_err, only: setAsserted, getFine; \
4053call setAsserted(ASSERTION,getFine(__FILE__,LINE)//MODULE_NAME//MSG); \
4054end block;
4055#else
4056#define CHECK_ASSERTION(LINE,ASSERTION,MSG) continue;
4057#endif
4058
4059!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4060
4092 function dateTimeInt_typer() result(dateTimeInt)
4093#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4094 !DEC$ ATTRIBUTES DLLEXPORT :: dateTimeInt_typer
4095#endif
4096 type(dateTimeInt_type) :: dateTimeInt
4097 integer(IK) :: values(8)
4098 call date_and_time(values = values)
4099 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@dateTimeInt_typer(): The processor does not provide date and time.") ! fpp
4100 dateTimeInt%year = values(1)
4101 dateTimeInt%month = values(2)
4102 dateTimeInt%day = values(3)
4103 dateTimeInt%zone = values(4)
4104 dateTimeInt%hour = values(5)
4105 dateTimeInt%minute = values(6)
4106 dateTimeInt%second = values(7)
4107 dateTimeInt%millisecond = values(8)
4108 end function
4109
4110!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4111
4144 function getDateTimeIntValues(self) result(values)
4145#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4146 !DEC$ ATTRIBUTES DLLEXPORT :: getDateTimeIntValues
4147#endif
4148 class(dateTimeInt_type), intent(in) :: self
4149 integer(IK) :: values(8)
4150 values(1) = self%year
4151 values(2) = self%month
4152 values(3) = self%day
4153 values(4) = self%zone
4154 values(5) = self%hour
4155 values(6) = self%minute
4156 values(7) = self%second
4157 values(8) = self%millisecond
4158 end function
4159
4160!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4161
4193 function dateTimeStr_typer() result(dateTimeStr)
4194#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4195 !DEC$ ATTRIBUTES DLLEXPORT :: dateTimeStr_typer
4196#endif
4197 type(dateTimeStr_type) :: dateTimeStr
4198 character(10) :: time
4199 character(8) :: date
4200 character(5) :: zone
4201 call date_and_time(date = date, time = time, zone = zone)
4202 CHECK_ASSERTION(__LINE__, len_trim(date) /= 0 .or. len_trim(time) /= 0 .or. len_trim(zone) /= 0, SK_"@dateTimeStr_typer(): The processor does not provide date and time.") ! fpp
4203 !dateTimeStr%century = date(1:2)
4204 dateTimeStr%year = date(1:4)
4205 dateTimeStr%month = date(5:6)
4206 dateTimeStr%day = date(7:8)
4207 dateTimeStr%zone = zone
4208 dateTimeStr%hour = time(1:2)
4209 dateTimeStr%minute = time(3:4)
4210 dateTimeStr%second = time(5:6)
4211 dateTimeStr%millisecond = time(8:10)
4212 end function
4213
4214!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4215
4279 pure elemental function isLeapYear(year) result(leapYear)
4280#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4281 !DEC$ ATTRIBUTES DLLEXPORT :: isLeapYear
4282#endif
4283 integer(IK), intent(in) :: year
4284 logical(LK) :: leapYear
4285 !check_assertion(__LINE__, year /= 0_IK, SK_"@isLeapYear(): The input year must be non-zero.") ! fpp
4286 leapYear = mod(year, 400_IK) == 0_IK .or. (mod(year, 4_IK) == 0_IK .and. mod(year, 100_IK) /= 0_IK)
4287 !if (year > 0_IK) then
4288 ! leapYear = mod(year, 400_IK) == 0_IK .or. (mod(year, 4_IK) == 0_IK .and. mod(year, 100_IK) /= 0_IK)
4289 !else
4290 ! leapYear = mod(year + 1_IK, 400_IK) == 0_IK .or. (mod(year + 1_IK, 4_IK) == 0_IK .and. mod(year + 1_IK, 100_IK) /= 0_IK)
4291 !end if
4292 end function
4293
4294!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4295
4345 function getMillisecond() result(millisecond)
4346#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4347 !DEC$ ATTRIBUTES DLLEXPORT :: getMillisecond
4348#endif
4349 integer(IK) :: millisecond
4350 integer(IK) :: values(8)
4351 call date_and_time(values = values)
4352 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@getMillisecond(): The processor does not provide date and time.") ! fpp
4353 millisecond = values(8)
4354 end function
4355
4356!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4357
4405 function getSecond() result(second)
4406#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4407 !DEC$ ATTRIBUTES DLLEXPORT :: getSecond
4408#endif
4409 integer(IK) :: second
4410 integer(IK) :: values(8)
4411 call date_and_time(values = values)
4412 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@getSecond(): The processor does not provide date and time.") ! fpp
4413 second = values(7)
4414 end function
4415
4416!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4417
4465 function getMinute() result(minute)
4466#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4467 !DEC$ ATTRIBUTES DLLEXPORT :: getMinute
4468#endif
4469 integer(IK) :: minute
4470 integer(IK) :: values(8)
4471 call date_and_time(values = values)
4472 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@getMinute(): The processor does not provide date and time.") ! fpp
4473 minute = values(6)
4474 end function
4475
4476!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4477
4529 impure elemental function getHour(zone) result(hour)
4530#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4531 !DEC$ ATTRIBUTES DLLEXPORT :: getHour
4532#endif
4533 use pm_kind, only: IKG => IK
4534 integer(IKG), intent(in), optional :: zone
4535 integer(IKG) :: hour
4536 integer(IKG) :: values(8)
4537 if (present(zone)) then
4538 CHECK_ASSERTION(__LINE__, isValidZone(zone), SK_"@getHour(): The condition `isValidZone(zone)` must hold. zone = "//getStr(zone)) ! fpp
4539 values = getDateTimeNewZone(zone)
4540 else
4541 values = getDateTime()
4542 end if
4543 !check_assertion(__LINE__, all(values /= -huge(values)), SK_"@getHour(): The processor does not provide date and time.") ! fpp
4544 hour = values(5)
4545 end function
4546
4547!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4548
4596 function getZone() result(zone)
4597#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4598 !DEC$ ATTRIBUTES DLLEXPORT :: getZone
4599#endif
4600 integer(IK) :: zone
4601 integer(IK) :: values(8)
4602 call date_and_time(values = values)
4603 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@getZone(): The processor does not provide date and time.") ! fpp
4604 zone = values(4)
4605 end function
4606
4607!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4608
4656 function getDay() result(day)
4657#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4658 !DEC$ ATTRIBUTES DLLEXPORT :: getDay
4659#endif
4660 integer(IK) :: day
4661 integer(IK) :: values(8)
4662 call date_and_time(values = values)
4663 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@getDay(): The processor does not provide date and time.") ! fpp
4664 day = values(3)
4665 end function
4666
4667!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4668
4716 function getMonth() result(month)
4717#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4718 !DEC$ ATTRIBUTES DLLEXPORT :: getMonth
4719#endif
4720 integer(IK) :: month
4721 integer(IK) :: values(8)
4722 call date_and_time(values = values)
4723 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@getMonth(): The processor does not provide date and time.") ! fpp
4724 month = values(2)
4725 end function
4726
4727!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4728
4776 function getYear() result(year)
4777#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4778 !DEC$ ATTRIBUTES DLLEXPORT :: getYear
4779#endif
4780 integer(IK) :: year
4781 integer(IK) :: values(8)
4782 call date_and_time(values = values)
4783 CHECK_ASSERTION(__LINE__, all(values /= -huge(values)), SK_"@getMonth(): The processor does not provide date and time.") ! fpp
4784 year = values(1)
4785 end function
4786
4787!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4788
4789 ! LCOV_EXCL_START
4800 function getNiceDateTime() result(niceDateTime)
4801#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
4802 !DEC$ ATTRIBUTES DLLEXPORT :: getNiceDateTime
4803#endif
4804 implicit none
4805 character(len=21) :: niceDateTime
4806 character(10) :: time
4807 character(8) :: date
4808 call date_and_time(date,time)
4809 niceDateTime = date(1:4)//'/'//date(5:6)//'/'//date(7:8)//' - '//time(1:2)//':'//time(3:4)//':'//time(5:6)
4810 end function getNiceDateTime
4812 ! LCOV_EXCL_STOP
4813
4814!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4815
4816#undef CHECK_ASSERTION
4817
4818end module pm_dateTime ! LCOV_EXCL_LINE
Generate and return the total number of days in the specified year or the month of the year of the Gr...
Generate and return the number of leap years within the closed year interval [since,...
Generate and return the number of weeks in the specified year or the month of the year of the Gregori...
Generate and return the date in the Gregorian Calendar that appears after the input date.
Generate and return the date in the Gregorian Calendar that appears before the input date.
Generate and return the calendarical difference in days between the two input Gregorian dates octuple...
Generate and return the current or the requested date and time in the requested time zone newzone (in...
Generate and return the current or the requested Gregorian date and time shifted by the specified amo...
Generate and return the current or the requested date and time converted to the corresponding Coordin...
Generate and return the current or the requested date and time as an integer-valued array of size 8 o...
Generate and return the current 12-hour-clock local hour of the current day of the Gregorian calendar...
Generate and return the Julian Date (Julian Day Number JDN + the fractional part of the day) from the...
Generate and return the ordinal day, also knowns as Day of Year (DOY), i.e., the number of days since...
Generate and return the ISO 8601 Week Date triple [week year, week number, week day] corresponding to...
Generate and return the day number of the week of a Gregorian Calendar date, assuming Monday is the f...
Generate and return the day number of the week of a Gregorian Calendar date, assuming Sunday is the z...
Generate and return the Week Number, i.e., the number of weeks of the input year until and including ...
Generate and return the week year corresponding to the ISO 8601 Week Date triple [week year,...
Generate and return the time zone abbreviation corresponding to the current local time or the specifi...
Generate and return .true. if the input date (year, month, day) triple corresponds to the last day of...
Generate and return .true. if the hour in the current or the input time zone (-720 : +840) is Ante Me...
Generate and return .true. if the input date and time values(:) or (year, month, day,...
Generate and return .true. is the input time zone zone in units of minutes is valid (i....
Generate and return a decorated string resulting from the concatenation of getFile(FILE) and getLine(...
Definition: pm_err.F90:382
Verify the input assertion holds and if it does not, print the (optional) input message on stdout and...
Definition: pm_err.F90:735
Generate and return the conversion of the input value to an output Fortran string,...
Definition: pm_val2str.F90:167
This module contains classes and procedures for computing, manipulating, and styling dates and times.
character(*, SK), parameter MODULE_NAME
real(RK), parameter MEAN_SECONDS_PER_MONTH
The constant scalar of type real of default kind RK containing the average number of seconds per mont...
integer(IK) function getYear()
Generate and return the current year of the Gregorian calendar.
integer(IK), dimension(12), parameter DAYS_OF_MONTH_LEAP
The integer constant vector of size 12 containing number of days in each month of a leap year of the ...
integer(IK) function getZone()
Generate and return the local time difference in minutes with respect to the Coordinated Universal Ti...
integer(IK), dimension(8), parameter ORIGIN
The constant vector of size 8 of type integer of default kind IK containing origin of the Gregorian c...
real(RK), parameter MEAN_DAYS_PER_YEAR
The constant scalar of type real of default kind RK containing the average number of days per year.
type(dateTimeStr_type) function dateTimeStr_typer()
This is the constructor of the dateTimeStr_type class.
character(9, SK), dimension(0:6), parameter WEEKDAY_NAME
The character constant vector of shape (0:6) of length type parameter 9 containing the names of the d...
integer(IK), parameter MINUTES_PER_DAY
The constant scalar of type integer of kind IK containing the number of minutes per day.
pure elemental logical(LK) function isLeapYear(year)
Generate and return .true. if the input year is a leap year.
integer(IK), parameter ZONE_MAX
The scalar constant of default integer kind IK representing the current maximum existing time zone va...
integer(IK) function, dimension(8) getDateTimeIntValues(self)
Generate and return an integer vector of length 8 containing all component values of the parent objec...
real(RK), parameter MEAN_MINUTES_PER_MONTH
The constant scalar of type real of default kind RK containing the average number of minutes per mont...
integer(IK) function getMinute()
Generate and return the current minute of the local hour of the current day of the Gregorian calendar...
character(*, SK), dimension(12), parameter MONTH_NAME
The character constant vector of size 12 of length type-parameter 9, containing full names of the mon...
real(RK), parameter MEAN_DAYS_PER_MONTH
The constant scalar of type real of default kind RK containing the average number of days per month.
real(RK), parameter MEAN_WEEKS_PER_MONTH
The constant scalar of type real of default kind RK containing the approximate (rounded) average numb...
real(RK), parameter MEAN_HOURS_PER_YEAR
The constant scalar of type real of default kind RK containing the average number of hours per year.
real(RK), parameter MEAN_HOURS_PER_MONTH
The constant scalar of type real of default kind RK containing the average number of hours per month.
real(RK), parameter MEAN_SECONDS_PER_YEAR
The constant scalar of type real of default kind RK containing the average number of seconds per year...
integer(IK), parameter SECONDS_PER_DAY
The constant scalar of type integer of kind IK containing the number of seconds per day.
integer(IK) function getMillisecond()
Generate and return the current millisecond of the current second of the current minute of the local ...
impure elemental integer(IKG) function getHour(zone)
Generate and return the current local hour of the current day of the Gregorian calendar,...
type(dateTimeInt_type) function dateTimeInt_typer()
This is the constructor of the dateTimeInt_type class.
integer(IK) function getSecond()
Generate and return the current second of the current minute of the local hour of the current day of ...
real(RK), parameter MEAN_WEEKS_PER_YEAR
The constant scalar of type real of default kind RK containing the approximate (rounded) average numb...
integer(IK) function getMonth()
Generate and return the current month of the Gregorian calendar.
type(timeZone_type), parameter timeZone
This is an object parameter of type timeZone_type containing a list of time zones and their represent...
integer(IK), parameter ZONE_MIN
The scalar constant of default integer kind IK representing the current minimum existing time zone va...
real(RK), parameter MEAN_MINUTES_PER_YEAR
The constant scalar of type real of default kind RK containing the average number of minutes per year...
integer(IK), dimension(12), parameter DAYS_OF_MONTH
The integer constant vector of size 12 containing number of days in each month of a common (non-leap)...
character(9, SK), dimension(1:7), parameter WEEKDAY_NAME_ISO
The character constant vector of size 7 of length type parameter 9 containing the names of the days o...
integer(IK) function getDay()
Generate and return the current day of the Gregorian calendar.
This module contains classes and procedures for reporting and handling errors.
Definition: pm_err.F90:52
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter RK
The default real kind in the ParaMonte library: real64 in Fortran, c_double in C-Fortran Interoperati...
Definition: pm_kind.F90:543
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
This module contains the generic procedures for converting values of different types and kinds to For...
Definition: pm_val2str.F90:58
This is the derived type containing the components of a numeric date and time in the Gregorian calend...
This is the derived type containing the string components that contain numeric date and time in the G...
This is the derived type for generating object parameters containing a list of time zones and their r...