libsim Versione 8.0.0
dballe_test2.F03
1#include "config.h"
2
3program dballe_test
4
9implicit none
10
11type(dbasession) :: session, sessionto
12type(dbaconnection) :: connection
13TYPE(l4f_handle) :: category
14INTEGER :: ier
15CHARACTER(len=512) :: a_name
16
17!questa chiamata prende dal launcher il nome univoco
18call l4f_launcher(a_name,a_name_force="dballe_test")
19!init di log4fortran
20ier=l4f_init()
21!imposta a_name
22category=l4f_category_get_handle(trim(a_name)//".main")
23
24! connect to dsn type DBA
25connection=dbaconnection(dsn="sqlite:dballe_test.sqlite")
26session=dbasession(connection,wipe=.true.,write=.true.)
27call write1() ! write etherogeneous ensamble of data with attributes and constant data using macro object
28call delete3() ! delete some attributes from one var only where are some defined metadati
29call writeattronly() ! append some attributes to station 1
30
31
32! connect to dsn type BUFR file for write
33sessionto=dbasession(filename="dballe_test2.bufr",wipe=.true.,write=.true.,memdb=.false.,template="generic")
34call export2bufr()
35
36# ifndef F2003_FULL_FEATURES
37call sessionto%delete()
38#endif
39
40! connect to dsn type BUFR file for write with memdb
41sessionto=dbasession(filename="dballe_test2_memdb.bufr",wipe=.true.,write=.true.,memdb=.true.,template="generic")
42call export2bufr()
43
44
45# ifndef F2003_FULL_FEATURES
46!close everythings
47call sessionto%delete()
48call session%delete()
49call connection%delete()
50#endif
51
52!chiudo il logger
53CALL l4f_category_delete(category)
54ier=l4f_fini()
55
56contains
57
58subroutine write1()
59
60type(dbametaanddata),allocatable :: metaanddata(:)
61type(dbadcv) :: attrv
62integer :: i
63
64print *,"----------------------------------------------"
65print *,"--------------- write1 ------------------------"
66
67allocate(metaanddata(5)) ! one metadata for data and one for constant data
68
69metaanddata(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
76metaanddata(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
83metaanddata(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
90metaanddata(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
97metaanddata(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
106allocate (metaanddata(1)%dataattrv%dataattr(1))
107
108! first data
109allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=dbadatai("B13003",85))
110
111! create an etherogeneous ensamble of attr
112allocate (attrv%dcv(3))
113allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",30.))
114allocate (attrv%dcv(2)%dat,source=dbadatai("*B33193",50))
115allocate (attrv%dcv(3)%dat,source=dbadatar("*B33194",70.))
116!assemble data and attribute
117metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
118
119! second station
120allocate (metaanddata(2)%dataattrv%dataattr(1))
121
122allocate (metaanddata(2)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",27315))
123! create an etherogeneous ensamble of attr
124deallocate(attrv%dcv)
125allocate (attrv%dcv(2))
126allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",30.))
127allocate (attrv%dcv(2)%dat,source=dbadatai("*B33193",50))
128!assemble data and attribute
129metaanddata(2)%dataattrv%dataattr(1)%attrv=attrv
130
131
132! 3d station with all data and attributes missing
133allocate (metaanddata(3)%dataattrv%dataattr(1))
134
135allocate (metaanddata(3)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",imiss))
136! create an etherogeneous ensamble of attr
137deallocate(attrv%dcv)
138allocate (attrv%dcv(1))
139allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",rmiss))
140!assemble data and attribute
141metaanddata(3)%dataattrv%dataattr(1)%attrv=attrv
142
143
144! 4d station with data present and attributes missing
145allocate (metaanddata(4)%dataattrv%dataattr(1))
146
147allocate (metaanddata(4)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",27315))
148! create an etherogeneous ensamble of attr
149deallocate(attrv%dcv)
150allocate (attrv%dcv(1))
151allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",rmiss))
152!assemble data and attribute
153metaanddata(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
158allocate (metaanddata(5)%dataattrv%dataattr(1))
159
160! first data
161allocate (metaanddata(5)%dataattrv%dataattr(1)%dat,source=dbadatai("B13003",-5))
162
163! create an attr
164deallocate (attrv%dcv)
165allocate (attrv%dcv(1))
166allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",30.))
167!assemble data and attribute
168metaanddata(5)%dataattrv%dataattr(1)%attrv=attrv
169
170
171!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
172
173!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
174! display and save everythings
175do i=1,size(metaanddata)
176 call metaanddata(i)%display()
177 !call session%extrude(metaanddata=metaanddata(i))
178 call metaanddata(i)%extrude(session)
179end do
180!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
181
182end subroutine write1
183
184
185
186subroutine delete3()
187
188type(dbametadata),allocatable :: metadata(:)
189type(dbafilter) :: filter
190
191print *,"----------------------------------------------"
192print *,"--------------- delete ----------------------"
193
194
195allocate(metadata(1))
196
197metadata(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
204filter=dbafilter(var="B13003",starvarlist="*B33193,*B33194")
205call session%set(filter=filter)
206call session%dissolveattr(metadata)
207
208deallocate(metadata)
209
210end subroutine delete3
211
212subroutine writeattronly()
213
214type(dbametaanddata),allocatable :: metaanddata(:)
215type(dbadcv) :: attrv
216integer :: i
217
218print *,"----------------------------------------------"
219print *,"--------------- writeattronly ------------------------"
220
221allocate(metaanddata(1)) ! one metadata for data and one for constant data
222
223metaanddata(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
232allocate (metaanddata(1)%dataattrv%dataattr(1))
233
234! first data
235allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=dbadatai("B12101",28315))
236
237! create an etherogeneous ensamble of attr
238allocate (attrv%dcv(2))
239allocate (attrv%dcv(1)%dat,source=dbadatar("*B33193"))
240allocate (attrv%dcv(2)%dat,source=dbadatar("*B33194",40.))
241!assemble data and attribute
242metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
243
244!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
245
246!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
247! display and save everythings
248do i=1,size(metaanddata)
249 call metaanddata(i)%display()
250 !call session%extrude(metaanddata=metaanddata(i))
251 call metaanddata(i)%extrude(session,attronly=.true.)
252end do
253!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
254
255end subroutine writeattronly
256
257subroutine export2bufr()
258type(dbametaanddata), allocatable:: metaanddatav(:)
259integer :: i
260
261print *,"----------------------------------------------"
262print *,"--------------- export2bufr ------------------------"
263
264call session%ingest(metaanddatav)
265
266do 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
275end do
276
277end subroutine export2bufr
278
279
280end program dballe_test
Global log4fortran destructor.
Global log4fortran constructor.
Classi per la gestione delle coordinate temporali.
class for import and export data from e to DB-All.e.
classe per la gestione del logging
Definitions of constants and functions for working with missing values.
Class for expressing an absolute time value.
manage connection handle to a DSN
integer version for dbadata
real version for dbadata
filter to apply before ingest data
summ of all metadata pieces
manage session handle

Generated with Doxygen.