libsim  Versione8.0.0
dballe_test2.F03
1 #include "config.h"
2 
3 program dballe_test
4 
5 use dballe_class
7 use log4fortran
9 implicit none
10 
11 type(dbasession) :: session, sessionto
12 type(dbaconnection) :: connection
13 TYPE(l4f_handle) :: category
14 INTEGER :: ier
15 CHARACTER(len=512) :: a_name
16 
17 !questa chiamata prende dal launcher il nome univoco
18 call l4f_launcher(a_name,a_name_force="dballe_test")
19 !init di log4fortran
20 ier=l4f_init()
21 !imposta a_name
22 category=l4f_category_get_handle(trim(a_name)//".main")
23 
24 ! connect to dsn type DBA
25 connection=dbaconnection(dsn="sqlite:dballe_test.sqlite")
26 session=dbasession(connection,wipe=.true.,write=.true.)
27 call write1() ! write etherogeneous ensamble of data with attributes and constant data using macro object
28 call delete3() ! delete some attributes from one var only where are some defined metadati
29 call writeattronly() ! append some attributes to station 1
30 
31 
32 ! connect to dsn type BUFR file for write
33 sessionto=dbasession(filename="dballe_test2.bufr",wipe=.true.,write=.true.,memdb=.false.,template="generic")
34 call export2bufr()
35 
36 # ifndef F2003_FULL_FEATURES
37 call sessionto%delete()
38 #endif
39 
40 ! connect to dsn type BUFR file for write with memdb
41 sessionto=dbasession(filename="dballe_test2_memdb.bufr",wipe=.true.,write=.true.,memdb=.true.,template="generic")
42 call export2bufr()
43 
44 
45 # ifndef F2003_FULL_FEATURES
46 !close everythings
47 call sessionto%delete()
48 call session%delete()
49 call connection%delete()
50 #endif
51 
52 !chiudo il logger
53 CALL l4f_category_delete(category)
54 ier=l4f_fini()
55 
56 contains
57 
58 subroutine write1()
59 
60 type(dbametaanddata),allocatable :: metaanddata(:)
61 type(dbadcv) :: attrv
62 integer :: i
63 
64 print *,"----------------------------------------------"
65 print *,"--------------- write1 ------------------------"
66 
67 allocate(metaanddata(5)) ! one metadata for data and one for constant data
68 
69 metaanddata(1)%metadata=dbametadata( &
70  level=dbalevel(level1=105, l1=2000) &
71  ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
72  ,ana=dbaana(lon=10.d0,lat=45.d0) &
73  ,network=dbanetwork("generic") &
74  ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
75 
76 metaanddata(2)%metadata=dbametadata( &
77  level=dbalevel(level1=105, l1=2000) &
78  ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
79  ,ana=dbaana(lon=11.d0,lat=45.d0) &
80  ,network=dbanetwork("generic") &
81  ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
82 
83 metaanddata(3)%metadata=dbametadata( &
84  level=dbalevel(level1=105, l1=2000) &
85  ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
86  ,ana=dbaana(lon=12.d0,lat=45.d0) &
87  ,network=dbanetwork("generic") &
88  ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
89 
90 metaanddata(4)%metadata=dbametadata( &
91  level=dbalevel(level1=105, l1=2000) &
92  ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
93  ,ana=dbaana(lon=13.d0,lat=45.d0) &
94  ,network=dbanetwork("generic") &
95  ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
96 
97 metaanddata(5)%metadata=dbametadata( &
98  level=dbalevel(level1=105, l1=2000) &
99  ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
100  ,ana=dbaana(lon=14.d0,lat=45.d0) &
101  ,network=dbanetwork("generic") &
102  ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
103 
104 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
105 ! create an etherogeneous ensamble of data
106 allocate (metaanddata(1)%dataattrv%dataattr(1))
107 
108 ! first data
109 allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=dbadatai("B13003",85))
110 
111 ! create an etherogeneous ensamble of attr
112 allocate (attrv%dcv(3))
113 allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",30.))
114 allocate (attrv%dcv(2)%dat,source=dbadatai("*B33193",50))
115 allocate (attrv%dcv(3)%dat,source=dbadatar("*B33194",70.))
116 !assemble data and attribute
117 metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
118 
119 ! second station
120 allocate (metaanddata(2)%dataattrv%dataattr(1))
121 
122 allocate (metaanddata(2)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",27315))
123 ! create an etherogeneous ensamble of attr
124 deallocate(attrv%dcv)
125 allocate (attrv%dcv(2))
126 allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",30.))
127 allocate (attrv%dcv(2)%dat,source=dbadatai("*B33193",50))
128 !assemble data and attribute
129 metaanddata(2)%dataattrv%dataattr(1)%attrv=attrv
130 
131 
132 ! 3d station with all data and attributes missing
133 allocate (metaanddata(3)%dataattrv%dataattr(1))
134 
135 allocate (metaanddata(3)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",imiss))
136 ! create an etherogeneous ensamble of attr
137 deallocate(attrv%dcv)
138 allocate (attrv%dcv(1))
139 allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",rmiss))
140 !assemble data and attribute
141 metaanddata(3)%dataattrv%dataattr(1)%attrv=attrv
142 
143 
144 ! 4d station with data present and attributes missing
145 allocate (metaanddata(4)%dataattrv%dataattr(1))
146 
147 allocate (metaanddata(4)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",27315))
148 ! create an etherogeneous ensamble of attr
149 deallocate(attrv%dcv)
150 allocate (attrv%dcv(1))
151 allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",rmiss))
152 !assemble data and attribute
153 metaanddata(4)%dataattrv%dataattr(1)%attrv=attrv
154 
155 
156 
157 ! ! 5d station with data invalid (Value -5 is outside the range [0,126] for 013003 (RELATIVE HUMIDITY) ) and attribute
158 allocate (metaanddata(5)%dataattrv%dataattr(1))
159 
160 ! first data
161 allocate (metaanddata(5)%dataattrv%dataattr(1)%dat,source=dbadatai("B13003",-5))
162 
163 ! create an attr
164 deallocate (attrv%dcv)
165 allocate (attrv%dcv(1))
166 allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",30.))
167 !assemble data and attribute
168 metaanddata(5)%dataattrv%dataattr(1)%attrv=attrv
169 
170 
171 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
172 
173 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
174 ! display and save everythings
175 do i=1,size(metaanddata)
176  call metaanddata(i)%display()
177  !call session%extrude(metaanddata=metaanddata(i))
178  call metaanddata(i)%extrude(session)
179 end do
180 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
181 
182 end subroutine write1
183 
184 
185 
186 subroutine delete3()
187 
188 type(dbametadata),allocatable :: metadata(:)
189 type(dbafilter) :: filter
190 
191 print *,"----------------------------------------------"
192 print *,"--------------- delete ----------------------"
193 
194 
195 allocate(metadata(1))
196 
197 metadata(1)=dbametadata( &
198  level=dbalevel(level1=105, l1=2000) &
199  ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
200  ,ana=dbaana(lon=10.d0,lat=45.d0) &
201  ,network=dbanetwork("generic") &
202  ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
203 
204 filter=dbafilter(var="B13003",starvarlist="*B33193,*B33194")
205 call session%set(filter=filter)
206 call session%dissolveattr(metadata)
207 
208 deallocate(metadata)
209 
210 end subroutine delete3
211 
212 subroutine writeattronly()
213 
214 type(dbametaanddata),allocatable :: metaanddata(:)
215 type(dbadcv) :: attrv
216 integer :: i
217 
218 print *,"----------------------------------------------"
219 print *,"--------------- writeattronly ------------------------"
220 
221 allocate(metaanddata(1)) ! one metadata for data and one for constant data
222 
223 metaanddata(1)%metadata=dbametadata( &
224  level=dbalevel(level1=105, l1=2000) &
225  ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
226  ,ana=dbaana(lon=11.d0,lat=45.d0) &
227  ,network=dbanetwork("generic") &
228  ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
229 
230 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
231 ! create an etherogeneous ensamble of data
232 allocate (metaanddata(1)%dataattrv%dataattr(1))
233 
234 ! first data
235 allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",28315))
236 
237 ! create an etherogeneous ensamble of attr
238 allocate (attrv%dcv(2))
239 allocate (attrv%dcv(1)%dat,source=dbadatar("*B33193"))
240 allocate (attrv%dcv(2)%dat,source=dbadatar("*B33194",40.))
241 !assemble data and attribute
242 metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
243 
244 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
245 
246 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
247 ! display and save everythings
248 do i=1,size(metaanddata)
249  call metaanddata(i)%display()
250  !call session%extrude(metaanddata=metaanddata(i))
251  call metaanddata(i)%extrude(session,attronly=.true.)
252 end do
253 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
254 
255 end subroutine writeattronly
256 
257 subroutine export2bufr()
258 type(dbametaanddata), allocatable:: metaanddatav(:)
259 integer :: i
260 
261 print *,"----------------------------------------------"
262 print *,"--------------- export2bufr ------------------------"
263 
264 call session%ingest(metaanddatav)
265 
266 do i=1,size(metaanddatav)
267  call metaanddatav(i)%display()
268  !call sessionto%extrude(metaanddata=metaanddatav(i))
269  call metaanddatav(i)%extrude(sessionto)
270  if (sessionto%memdb) then
271  call sessionto%messages_write_next("generic")
272  !clean memdb
273  call sessionto%remove_all()
274  endif
275 end do
276 
277 end subroutine export2bufr
278 
279 
280 end program dballe_test
Class for expressing an absolute time value.
datetime metadata
Classi per la gestione delle coordinate temporali.
manage session handle
summ of all metadata pieces
filter to apply before ingest data
Global log4fortran destructor.
manage connection handle to a DSN
Definitions of constants and functions for working with missing values.
integer version for dbadata
class for import and export data from e to DB-All.e.
classe per la gestione del logging
Global log4fortran constructor.
timerange metadata
real version for dbadata

Generated with Doxygen.