1 | ! --------------------------------------------------- ! |
---|
2 | ! ------------- XMLIO SERVER MAIN TEST ------------- ! |
---|
3 | ! --------------------------------------------------- ! |
---|
4 | |
---|
5 | MODULE 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 | |
---|
35 | END MODULE XTYPE |
---|
36 | |
---|
37 | MODULE 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 | |
---|
50 | END MODULE IXHANDLE |
---|
51 | |
---|
52 | MODULE 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 |
---|
65 | END MODULE IXML |
---|
66 | |
---|
67 | MODULE 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 |
---|
84 | END MODULE IDATATREATMENT |
---|
85 | |
---|
86 | PROGRAM 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 | |
---|
119 | END PROGRAM MAIN |
---|