source: XIOS/trunk/src/interface/fortran/date_interface.F90 @ 1542

Last change on this file since 1542 was 801, checked in by rlacroix, 8 years ago

Fortran interface: Add functions to convert a string to a date or a duration.

File size: 4.5 KB
Line 
1#include "../fortran/xios_fortran_prefix.hpp"
2
3MODULE DATE_INTERFACE
4   USE, INTRINSIC :: ISO_C_BINDING
5   USE IDURATION, only : txios(duration)
6
7   TYPE, BIND(C) :: txios(date)
8      INTEGER(kind = C_INT) :: year, month, day, hour, minute, second
9   END TYPE txios(date)
10
11   PRIVATE :: txios(duration)
12
13   INTERFACE ! Ne pas appeler directement/Interface FORTRAN 2003 <-> C99
14
15      INTEGER(kind = C_LONG_LONG) FUNCTION cxios_date_convert_to_seconds(date) BIND(C)
16         USE ISO_C_BINDING
17         IMPORT :: txios(date)
18         TYPE(txios(date)), VALUE :: date
19      END FUNCTION cxios_date_convert_to_seconds
20
21      SUBROUTINE cxios_date_convert_to_string(date, str, str_size) BIND(C)
22         USE ISO_C_BINDING
23         IMPORT :: txios(date)
24         TYPE(txios(date)), VALUE :: date
25         CHARACTER(kind = C_CHAR), DIMENSION(*) :: str
26         INTEGER(kind = C_INT), VALUE :: str_size
27      END SUBROUTINE cxios_date_convert_to_string
28
29      TYPE(txios(date)) FUNCTION cxios_date_convert_from_string(str, str_size) BIND(C)
30         USE ISO_C_BINDING
31         IMPORT :: txios(date)
32         CHARACTER(kind = C_CHAR), DIMENSION(*) :: str
33         INTEGER(kind = C_INT), VALUE :: str_size
34      END FUNCTION cxios_date_convert_from_string
35
36      TYPE(txios(date)) FUNCTION cxios_date_add_duration(date, dur) BIND(C)
37         USE ISO_C_BINDING
38         IMPORT :: txios(date)
39         IMPORT :: txios(duration)
40         TYPE(txios(date)), VALUE :: date
41         TYPE(txios(duration)), VALUE :: dur
42      END FUNCTION cxios_date_add_duration
43
44      TYPE(txios(date)) FUNCTION cxios_date_sub_duration(date, dur) BIND(C)
45         USE ISO_C_BINDING
46         IMPORT :: txios(date)
47         IMPORT :: txios(duration)
48         TYPE(txios(date)), VALUE :: date
49         TYPE(txios(duration)), VALUE :: dur
50      END FUNCTION cxios_date_sub_duration
51
52      TYPE(txios(duration)) FUNCTION cxios_date_sub(date1, date2) BIND(C)
53         USE ISO_C_BINDING
54         IMPORT :: txios(date)
55         IMPORT :: txios(duration)
56         TYPE(txios(date)), VALUE :: date1, date2
57      END FUNCTION cxios_date_sub
58
59      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_eq(date1, date2) BIND(C)
60         USE ISO_C_BINDING
61         IMPORT :: txios(date)
62         TYPE(txios(date)), VALUE :: date1, date2
63      END FUNCTION cxios_date_eq
64
65      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_neq(date1, date2) BIND(C)
66         USE ISO_C_BINDING
67         IMPORT :: txios(date)
68         TYPE(txios(date)), VALUE :: date1, date2
69      END FUNCTION cxios_date_neq
70
71      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_lt(date1, date2) BIND(C)
72         USE ISO_C_BINDING
73         IMPORT :: txios(date)
74         TYPE(txios(date)), VALUE :: date1, date2
75      END FUNCTION cxios_date_lt
76
77      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_le(date1, date2) BIND(C)
78         USE ISO_C_BINDING
79         IMPORT :: txios(date)
80         TYPE(txios(date)), VALUE :: date1, date2
81      END FUNCTION cxios_date_le
82
83      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_gt(date1, date2) BIND(C)
84         USE ISO_C_BINDING
85         IMPORT :: txios(date)
86         TYPE(txios(date)), VALUE :: date1, date2
87      END FUNCTION cxios_date_gt
88
89      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_ge(date1, date2) BIND(C)
90         USE ISO_C_BINDING
91         IMPORT :: txios(date)
92         TYPE(txios(date)), VALUE :: date1, date2
93      END FUNCTION cxios_date_ge
94
95      INTEGER(kind = C_INT) FUNCTION cxios_date_get_second_of_year(date) BIND(C)
96         USE ISO_C_BINDING
97         IMPORT :: txios(date)
98         TYPE(txios(date)), VALUE :: date
99      END FUNCTION cxios_date_get_second_of_year
100
101      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_day_of_year(date) BIND(C)
102         USE ISO_C_BINDING
103         IMPORT :: txios(date)
104         TYPE(txios(date)), VALUE :: date
105      END FUNCTION cxios_date_get_day_of_year
106
107      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_fraction_of_year(date) BIND(C)
108         USE ISO_C_BINDING
109         IMPORT :: txios(date)
110         TYPE(txios(date)), VALUE :: date
111      END FUNCTION cxios_date_get_fraction_of_year
112
113      INTEGER(kind = C_INT) FUNCTION cxios_date_get_second_of_day(date) BIND(C)
114         USE ISO_C_BINDING
115         IMPORT :: txios(date)
116         TYPE(txios(date)), VALUE :: date
117      END FUNCTION cxios_date_get_second_of_day
118
119      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_fraction_of_day(date) BIND(C)
120         USE ISO_C_BINDING
121         IMPORT :: txios(date)
122         TYPE(txios(date)), VALUE :: date
123      END FUNCTION cxios_date_get_fraction_of_day
124
125   END INTERFACE
126
127END MODULE DATE_INTERFACE
Note: See TracBrowser for help on using the repository browser.