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

Last change on this file since 133 was 133, checked in by hozdoba, 12 years ago
File size: 3.7 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 ICONTEXT
68   IMPLICIT NONE
69   INTERFACE
70
71      SUBROUTINE xios_context_set_current(context, withswap)
72         USE XTYPE
73         TYPE(XHandle),     INTENT(IN)  :: context
74         LOGICAL, OPTIONAL, INTENT(IN)  :: withswap
75      END SUBROUTINE xios_context_set_current
76
77   END INTERFACE
78
79END MODULE ICONTEXT
80
81MODULE IDATATREATMENT
82   IMPLICIT NONE
83   INTERFACE
84
85      SUBROUTINE xios_dtreatment_new(dt, context)
86         USE XTYPE
87         TYPE(XHandle), INTENT(OUT) :: dt
88         TYPE(XHandle), INTENT(IN)  :: context
89      END SUBROUTINE xios_dtreatment_new
90
91      SUBROUTINE xios_dtreatment_create_files_and_headers(dt, ftype)
92         USE XTYPE
93         TYPE(XHandle), INTENT(IN) :: dt
94         INTEGER      , INTENT(IN) :: ftype
95      END SUBROUTINE xios_dtreatment_create_files_and_headers
96
97   END INTERFACE
98END MODULE IDATATREATMENT
99
100PROGRAM MAIN
101   USE XTYPE
102   USE IXHANDLE
103   USE IXML
104   USE ICONTEXT
105   USE IDATATREATMENT
106
107   IMPLICIT NONE
108
109   TYPE(XHandle) :: context1 = NULLHANDLE
110   TYPE(XHandle) :: dtreat   = NULLHANDLE
111
112   ! Parsing du document xml depuis un fichier situé sur le disque.
113   CALL xios_xml_Parse_File("/local/XMLIOSERVER_DEV/dev_rv/test/iodef_simple_test.xml")
114
115   ! Création d'un handle sur le contexte dans lequel on souhaite travailler, càd 'context1' ici.
116   CALL xios_handle_create(context1, ECONTEXT, "context1")
117   iF ((context1%dtype == 0) .AND. (context1%daddr == 0)) THEN
118      PRINT *, "Impossible de créer un handle sur l'élément context1 !"
119      STOP
120   END IF
121
122   ! ----------- Début du traitement ----------- !
123
124   CALL xios_context_set_current(context1, .TRUE.)
125
126   ! Création et initialisation d'une instance de traitement des données dans 'context1'.
127   CALL xios_dtreatment_new(dtreat, context1)
128   iF ((dtreat%dtype == 0) .AND. (dtreat%daddr == 0)) THEN
129      PRINT *, "Impossible d'initialiser l'instance de traitement !"
130      STOP
131   END IF
132
133   ! Création des fichiers et des entêtes dans le contexte.
134   CALL xios_dtreatment_create_files_and_headers(dtreat, NETCDF4)
135
136END PROGRAM MAIN
Note: See TracBrowser for help on using the repository browser.