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

Last change on this file since 756 was 576, checked in by rlacroix, 9 years ago

Fix compilation with PGI for the development version of XIOS 2.0

  • Convert parse_xml.cpp to Fortran (port r573 to the trunk).
  • Modify date_interface to work-around a problem related to xios_duration type.
  • Reorganize the XIOS module to work-around a problem related to operator overloads for xios_duration and xios_date types.
File size: 3.9 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      TYPE(txios(date)) FUNCTION cxios_date_add_duration(date, dur) BIND(C)
22         USE ISO_C_BINDING
23         IMPORT :: txios(date)
24         IMPORT :: txios(duration)
25         TYPE(txios(date)), VALUE :: date
26         TYPE(txios(duration)), VALUE :: dur
27      END FUNCTION cxios_date_add_duration
28
29      TYPE(txios(date)) FUNCTION cxios_date_sub_duration(date, dur) BIND(C)
30         USE ISO_C_BINDING
31         IMPORT :: txios(date)
32         IMPORT :: txios(duration)
33         TYPE(txios(date)), VALUE :: date
34         TYPE(txios(duration)), VALUE :: dur
35      END FUNCTION cxios_date_sub_duration
36
37      TYPE(txios(duration)) FUNCTION cxios_date_sub(date1, date2) BIND(C)
38         USE ISO_C_BINDING
39         IMPORT :: txios(date)
40         IMPORT :: txios(duration)
41         TYPE(txios(date)), VALUE :: date1, date2
42      END FUNCTION cxios_date_sub
43
44      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_eq(date1, date2) BIND(C)
45         USE ISO_C_BINDING
46         IMPORT :: txios(date)
47         TYPE(txios(date)), VALUE :: date1, date2
48      END FUNCTION cxios_date_eq
49
50      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_neq(date1, date2) BIND(C)
51         USE ISO_C_BINDING
52         IMPORT :: txios(date)
53         TYPE(txios(date)), VALUE :: date1, date2
54      END FUNCTION cxios_date_neq
55
56      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_lt(date1, date2) BIND(C)
57         USE ISO_C_BINDING
58         IMPORT :: txios(date)
59         TYPE(txios(date)), VALUE :: date1, date2
60      END FUNCTION cxios_date_lt
61
62      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_le(date1, date2) BIND(C)
63         USE ISO_C_BINDING
64         IMPORT :: txios(date)
65         TYPE(txios(date)), VALUE :: date1, date2
66      END FUNCTION cxios_date_le
67
68      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_gt(date1, date2) BIND(C)
69         USE ISO_C_BINDING
70         IMPORT :: txios(date)
71         TYPE(txios(date)), VALUE :: date1, date2
72      END FUNCTION cxios_date_gt
73
74      LOGICAL(kind = C_BOOL) FUNCTION cxios_date_ge(date1, date2) BIND(C)
75         USE ISO_C_BINDING
76         IMPORT :: txios(date)
77         TYPE(txios(date)), VALUE :: date1, date2
78      END FUNCTION cxios_date_ge
79
80      INTEGER(kind = C_INT) FUNCTION cxios_date_get_second_of_year(date) BIND(C)
81         USE ISO_C_BINDING
82         IMPORT :: txios(date)
83         TYPE(txios(date)), VALUE :: date
84      END FUNCTION cxios_date_get_second_of_year
85
86      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_day_of_year(date) BIND(C)
87         USE ISO_C_BINDING
88         IMPORT :: txios(date)
89         TYPE(txios(date)), VALUE :: date
90      END FUNCTION cxios_date_get_day_of_year
91
92      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_fraction_of_year(date) BIND(C)
93         USE ISO_C_BINDING
94         IMPORT :: txios(date)
95         TYPE(txios(date)), VALUE :: date
96      END FUNCTION cxios_date_get_fraction_of_year
97
98      INTEGER(kind = C_INT) FUNCTION cxios_date_get_second_of_day(date) BIND(C)
99         USE ISO_C_BINDING
100         IMPORT :: txios(date)
101         TYPE(txios(date)), VALUE :: date
102      END FUNCTION cxios_date_get_second_of_day
103
104      REAL(kind = C_DOUBLE) FUNCTION cxios_date_get_fraction_of_day(date) BIND(C)
105         USE ISO_C_BINDING
106         IMPORT :: txios(date)
107         TYPE(txios(date)), VALUE :: date
108      END FUNCTION cxios_date_get_fraction_of_day
109
110   END INTERFACE
111
112END MODULE DATE_INTERFACE
Note: See TracBrowser for help on using the repository browser.