10 type(dbasession) :: session, sessionfrom,sessionto
12 integer :: ier, category
13 CHARACTER(len=512) :: a_name
16 call l4f_launcher(a_name,a_name_force=
"dballe_test")
20 category=l4f_category_get(a_name//
".main")
23 connection=
dbaconnection(dsn=
"sqlite:dballe_test.sqlite?wipe=true")
24 session=
dbasession(connection,wipe=.true.,write=.true.)
33 # ifndef F2003_FULL_FEATURES
36 call connection%delete()
40 session=
dbasession(filename=
"dballe_test.bufr",wipe=.true.,write=.true.,memdb=.false.)
47 # ifndef F2003_FULL_FEATURES
53 sessionfrom=
dbasession(filename=
"dballe_test.bufr",memdb=.false.)
55 sessionto=
dbasession(filename=
"dballe_test_copy1f.bufr",wipe=.true.,write=.true.,memdb=.false.)
58 # ifndef F2003_FULL_FEATURES
60 call sessionto%delete()
61 call sessionfrom%delete()
67 sessionfrom=
dbasession(connectionfrom,wipe=.true.,write=.true.)
68 call sessionfrom%messages_open_input(filename=
"dballe_test.bufr",mode=
"r",format=
"BUFR",simplified=.true.)
70 sessionto=
dbasession(filename=
"dballe_test_copy1fmem.bufr",wipe=.true.,write=.true.,memdb=.false.)
73 # ifndef F2003_FULL_FEATURES
75 call sessionfrom%delete()
76 call connectionfrom%delete()
77 call sessionto%delete()
81 CALL l4f_category_delete(category)
94 sessionana=
dbasession(filename=
"dballe_test_ana.bufr",wipe=.true.,write=.true.,memdb=.false.)
97 call anal%append(
dbaana(lon=11.d0,lat=45.d0))
98 call anal%append(
dbaana(lon=12.d0,lat=45.d0))
99 call anal%append(
dbaana(lon=13.d0,lat=45.d0))
105 do while (anal%element())
108 call ana%extrude(sessionana)
112 # ifndef F2003_FULL_FEATURES
113 call sessionana%delete()
118 end subroutine write0
127 print *,
"----------------------------------------------"
128 print *,
"--------------- write1 ------------------------"
130 allocate(metaanddata(2))
133 level=
dbalevel(level1=105, l1=2000) &
135 ,ana=
dbaana(lon=10.d0,lat=45.d0) &
137 ,datetime=
dbadatetime(datetime_new(2014,01,06,18,00)))
141 allocate (metaanddata(1)%dataattrv%dataattr(2))
144 allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=
dbadatai(
"B13003",85))
147 allocate (attrv%dcv(3))
148 allocate (attrv%dcv(1)%dat,source=
dbadatar(
"*B33192",30.))
149 allocate (attrv%dcv(2)%dat,source=
dbadatai(
"*B33193",50))
150 allocate (attrv%dcv(3)%dat,source=
dbadatar(
"*B33194",70.))
152 metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
155 allocate (metaanddata(1)%dataattrv%dataattr(2)%dat,source=
dbadatai(
"B12101",27315))
157 deallocate(attrv%dcv)
158 allocate (attrv%dcv(2))
159 allocate (attrv%dcv(1)%dat,source=
dbadatar(
"*B33192",30.))
160 allocate (attrv%dcv(2)%dat,source=
dbadatai(
"*B33193",50))
162 metaanddata(1)%dataattrv%dataattr(2)%attrv=attrv
168 metaanddata(2)%metadata=metaanddata(1)%metadata%dbacontextana()
170 allocate (metaanddata(2)%dataattrv%dataattr(2))
171 allocate (metaanddata(2)%dataattrv%dataattr(1)%dat,source=
dbadatai(
"B07030",223))
172 allocate (metaanddata(2)%dataattrv%dataattr(1)%attrv%dcv(0))
173 allocate (metaanddata(2)%dataattrv%dataattr(2)%dat,source=
dbadatac(
"B01019",
"My beautifull station"))
174 allocate (metaanddata(2)%dataattrv%dataattr(2)%attrv%dcv(0))
179 do i=1,
size(metaanddata)
180 call metaanddata(i)%display()
182 call metaanddata(i)%extrude(session)
186 end subroutine write1
191 type(dbadatar),
allocatable :: data(:)
200 print *,
"----------------------------------------------"
201 print *,
"--------------- write2 ------------------------"
205 call session%unsetall()
211 call timerange%display()
213 ana=
dbaana(lon=11.d0,lat=45.d0)
216 call network%display()
217 datetime=
dbadatetime(datetime_new(2014,01,06,18,00))
218 call datetime%display()
221 call session%set(level=level)
222 call session%set(timerange=timerange)
223 call session%set(ana=ana)
224 call session%set(network=network)
225 call session%set(datetime=datetime)
235 allocate (
data(2),source=[
dbadatar(
"B12102",265.33),
dbadatar(
"B12101",273.15)])
239 call
data(i)%display()
240 call session%set(data=
data(i))
245 call session%prendilo()
249 call session%close_message()
252 end subroutine write2
265 print *,
"----------------------------------------------"
266 print *,
"--------------- write3 ------------------------"
270 call session%unsetall()
275 ana=
dbaana(lon=12.d0,lat=45.d0)
277 datetime=
dbadatetime(datetime_new(2014,01,06,18,00))
280 metadata=
dbametadata(level=level,timerange=timerange,ana=ana,network=network,datetime=datetime)
281 call metadata%display()
284 call session%set(metadata)
288 call metadata%display()
291 allocate (datav%dcv(2))
292 allocate (datav%dcv(1)%dat,source=
dbadatai(
"B12102",26312))
293 allocate (datav%dcv(2)%dat,source=
dbadatar(
"B12101",273.15))
296 call session%set(datav=datav)
302 call session%prendilo()
306 call session%close_message()
308 end subroutine write3
318 print *,
"----------------------------------------------"
319 print *,
"--------------- write4 ------------------------"
322 call session%unsetall()
326 level=
dbalevel(level1=105, l1=2000) &
328 ,ana=
dbaana(lon=13.d0,lat=45.d0) &
330 ,datetime=
dbadatetime(datetime_new(2014,01,06,18,00)))
332 call session%set(metadata)
335 allocate (datav%dcv(2))
336 allocate (datav%dcv(1)%dat,source=
dbadatai(
"B12102",26312))
337 allocate (datav%dcv(2)%dat,source=
dbadatar(
"B12101",273.15))
340 allocate (attrv%dcv(3))
341 allocate (attrv%dcv(1)%dat,source=
dbadatai(
"*B33192",30))
342 allocate (attrv%dcv(2)%dat,source=
dbadatac(
"*B33193",
"70"))
343 allocate (attrv%dcv(3)%dat,source=
dbadatad(
"*B33194",50.d0))
347 allocate (dataattrv%dataattr(2))
349 allocate (dataattrv%dataattr(1)%dat,source=datav%dcv(1)%dat)
350 dataattrv%dataattr(1)%attrv=attrv
352 allocate (dataattrv%dataattr(2)%dat,source=datav%dcv(2)%dat)
353 allocate (dataattrv%dataattr(2)%attrv%dcv(0))
355 call dataattrv%display()
359 call dataattrv%extrude(session)
362 call session%set(metadata%dbacontextana())
366 call dataattrv%extrude(session)
368 end subroutine write4
375 print *,
"----------------------------------------------"
376 print *,
"--------------- delete1 ----------------------"
379 call session%set(filter=filter)
380 call session%dissolve()
382 end subroutine delete1
390 print *,
"----------------------------------------------"
391 print *,
"--------------- delete2 ----------------------"
394 allocate(metadata(1))
397 level=
dbalevel(level1=105, l1=2000) &
399 ,ana=
dbaana(lon=11.d0,lat=45.d0) &
401 ,datetime=
dbadatetime(datetime_new(2014,01,06,18,00)))
405 call session%set(filter=filter)
406 call session%dissolve(metadata)
410 end subroutine delete2
419 print *,
"----------------------------------------------"
420 print *,
"--------------- delete3 ----------------------"
423 allocate(metadata(1))
426 level=
dbalevel(level1=105, l1=2000) &
428 ,ana=
dbaana(lon=13.d0,lat=45.d0) &
430 ,datetime=
dbadatetime(datetime_new(2014,01,06,18,00)))
432 filter=
dbafilter(var=
"B12102",starvarlist=
"*B33194,*B33193")
433 call session%set(filter=filter)
434 call session%dissolveattr(metadata)
438 end subroutine delete3
445 print *,
"----------------------------------------------"
446 print *,
"--------------- copy1f ----------------------"
449 call sessionfrom%filerewind()
452 call sessionfrom%ingest(metaanddatav)
453 do while (
size(metaanddatav) >0)
454 print*,
"read/write data; count: ",sessionfrom%count
455 do i =1,
size(metaanddatav)
456 print *,
"display metaanddatav index: ", i
459 call metaanddatav(i)%extrude(sessionto)
462 call sessionfrom%ingest(metaanddatav)
464 deallocate (metaanddatav)
467 call sessionfrom%filerewind()
469 call sessionfrom%set(filter=
dbafilter(contextana=.true.))
470 call sessionfrom%ingest(metaanddatav)
471 do while (
size(metaanddatav) >0)
472 print*,
"read/write data; count: ",sessionfrom%count
473 do i =1,
size(metaanddatav)
474 print *,
"display metaanddatav index: ", i
477 call metaanddatav(i)%extrude(sessionto)
480 call sessionfrom%ingest(metaanddatav)
483 end subroutine copy1f
486 subroutine copy1fmem()
489 print *,
"----------------------------------------------"
490 print *,
"--------------- copy1fmem ----------------------"
493 do while (sessionfrom%messages_read_next())
504 call sessionfrom%set(filter=
dbafilter(contextana=.true.))
505 call sessionfrom%ingest(metaanddatav)
511 call sessionfrom%remove_all()
514 end subroutine copy1fmem
516 end program dballe_test
Classi per la gestione delle coordinate temporali.
vector of container of dbadata
double linked list of ana
character version for dbadata
doubleprecision version for dbadata
vector of dbadataattr (more data plus attributes)
filter to apply before ingest data
manage connection handle to a DSN
class for import and export data from e to DB-All.e.
integer version for dbadata
classe per la gestione del logging
Global log4fortran constructor.