source: XMLIO_V2/dev/dev_rv/src/XMLIO/main.f90 @ 132

Last change on this file since 132 was 132, checked in by hozdoba, 14 years ago

suite interface cpp<->fortran

File size: 3.4 KB
Line 
1! --------------------------------------------------- !
2! ------------- XMLIO SERVER MAIN TEST  ------------- !
3! --------------------------------------------------- !
4
5MODULE XTYPE
6   IMPLICIT NONE
7
8   ! Ne jamais modifier les valeurs internes de ce type dans le code fortran.
9   TYPE XHandle
10      INTEGER :: dtype
11      INTEGER :: daddr
12   END TYPE XHandle
13
14   TYPE XDate
15      INTEGER :: year, month, day, hour, minute, second
16   END TYPE XDate
17
18   TYPE XDuration
19      REAL(kind = 4) :: year, month, day, hour, minute, second
20   END TYPE XDuration
21
22   ! enum XDType
23   INTEGER, PARAMETER  :: NOTYPE = 0
24   INTEGER, PARAMETER  :: DTREATMENT = 1, DDATE = 2, CALENDAR = 3, ECONTEXT = 4
25   INTEGER, PARAMETER  :: EAXIS = 5 , EDOMAIN = 6 , EFIELD = 7 , EFILE = 8 , EGRID = 9
26   INTEGER, PARAMETER  :: GAXIS = 10, GDOMAIN = 11, GFIELD = 12, GFILE = 13, GGRID = 14
27
28   ! enum XFileType
29   INTEGER, PARAMETER  :: NETCDF4 = 0
30
31   ! Autres constantes
32   TYPE(XHandle)  , PARAMETER :: NULLHANDLE = XHandle(0, 0)
33   TYPE(XDuration), PARAMETER :: NONEDUR    = XDuration(0., 0., 0., 0., 0., 0.)
34
35END MODULE XTYPE
36
37MODULE IXHANDLE
38
39   INTERFACE
40
41      SUBROUTINE xios_handle_create(ret, dtype, idt)
42         USE XTYPE
43         TYPE(XHandle), INTENT(OUT) :: ret
44         INTEGER      , INTENT(IN)  :: dtype
45         CHARACTER*(*), INTENT(IN)  :: idt
46      END SUBROUTINE xios_handle_create
47
48   END INTERFACE
49
50END MODULE IXHANDLE
51
52MODULE IXML
53   IMPLICIT NONE
54   INTERFACE
55
56      SUBROUTINE xios_xml_Parse_File(filename)
57         CHARACTER*(*), INTENT(IN) :: filename
58      END SUBROUTINE xios_xml_Parse_File
59
60      SUBROUTINE xios_xml_Parse_String(xmlcontent)
61         CHARACTER*(*), INTENT(IN) :: xmlcontent
62      END SUBROUTINE xios_xml_Parse_String
63
64   END INTERFACE
65END MODULE IXML
66
67MODULE IDATATREATMENT
68   IMPLICIT NONE
69   INTERFACE
70
71      SUBROUTINE xios_dtreatment_new(dt, context)
72         USE XTYPE
73         TYPE(XHandle), INTENT(OUT) :: dt
74         TYPE(XHandle), INTENT(IN)  :: context
75      END SUBROUTINE xios_dtreatment_new
76
77      SUBROUTINE xios_dtreatment_create_files_and_headers(dt, ftype)
78         USE XTYPE
79         TYPE(XHandle), INTENT(IN) :: dt
80         INTEGER      , INTENT(IN) :: ftype
81      END SUBROUTINE xios_dtreatment_create_files_and_headers
82
83   END INTERFACE
84END MODULE IDATATREATMENT
85
86PROGRAM MAIN
87   USE XTYPE
88   USE IXHANDLE
89   USE IXML
90   USE IDATATREATMENT
91
92   IMPLICIT NONE
93
94   TYPE(XHandle) :: context1 = NULLHANDLE
95   TYPE(XHandle) :: dtreat   = NULLHANDLE
96
97   ! Parsing du document xml depuis un fichier situé sur le disque.
98   CALL xios_xml_Parse_File("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml")
99
100   ! Création d'un handle sur le contexte dans lequel on souhaite travailler, càd 'context1' ici.
101   CALL xios_handle_create(context1, ECONTEXT, "context1")
102   iF ((context1%dtype == 0) .AND. (context1%daddr == 0)) THEN
103      PRINT *, "Impossible de créer un handle sur l'élément context1 !"
104      STOP
105   END IF
106
107   ! ----------- Début du traitement ----------- !
108
109   ! Création et initialisation d'une instance de traitement des données dans 'context1'.
110   CALL xios_dtreatment_new(dtreat, context1)
111   iF ((dtreat%dtype == 0) .AND. (dtreat%daddr == 0)) THEN
112      PRINT *, "Impossible d'initialiser l'instance de traitement !"
113      STOP
114   END IF
115
116   ! Création des fichiers et des entêtes dans le contexte.
117   CALL xios_dtreatment_create_files_and_headers(dtreat, NETCDF4)
118
119END PROGRAM MAIN
Note: See TracBrowser for help on using the repository browser.