10 type(dbasession) :: session, sessionfrom,sessionto
11 type(dbaconnection) :: connection ,connectionfrom
12 TYPE(l4f_handle) :: category
14 CHARACTER(len=512) :: a_name
17 call l4f_launcher(a_name,a_name_force=
"dballe_test")
21 category=l4f_category_get_handle(trim(a_name)//
".main")
24 connection=
dbaconnection(dsn=
"sqlite:dballe_test.sqlite?wipe=true")
25 session=
dbasession(connection,wipe=.true.,write=.true.)
34 # ifndef F2003_FULL_FEATURES 37 call connection%delete()
41 session=
dbasession(filename=
"dballe_test.bufr",wipe=.true.,write=.true.,memdb=.false.)
48 # ifndef F2003_FULL_FEATURES 54 sessionfrom=
dbasession(filename=
"dballe_test.bufr",memdb=.false.)
56 sessionto=
dbasession(filename=
"dballe_test_copy1f.bufr",wipe=.true.,write=.true.,memdb=.false.)
59 # ifndef F2003_FULL_FEATURES 61 call sessionto%delete()
62 call sessionfrom%delete()
68 sessionfrom=
dbasession(connectionfrom,wipe=.true.,write=.true.)
69 call sessionfrom%messages_open_input(filename=
"dballe_test.bufr",mode=
"r",format=
"BUFR",simplified=.true.)
71 sessionto=
dbasession(filename=
"dballe_test_copy1fmem.bufr",wipe=.true.,write=.true.,memdb=.false.)
74 # ifndef F2003_FULL_FEATURES 76 call sessionfrom%delete()
77 call connectionfrom%delete()
78 call sessionto%delete()
82 CALL l4f_category_delete(category)
89 type(dbasession) :: sessionana
90 type(dbaanalist) :: anal
95 sessionana=
dbasession(filename=
"dballe_test_ana.bufr",wipe=.true.,write=.true.,memdb=.false.)
98 call anal%append(
dbaana(lon=11.d0,lat=45.d0))
99 call anal%append(
dbaana(lon=12.d0,lat=45.d0))
100 call anal%append(
dbaana(lon=13.d0,lat=45.d0))
106 do while (anal%element())
109 call ana%extrude(sessionana)
113 # ifndef F2003_FULL_FEATURES 114 call sessionana%delete()
119 end subroutine write0
124 type(dbametaanddata),
allocatable :: metaanddata(:)
125 type(dbadcv) :: attrv
128 print *,
"----------------------------------------------" 129 print *,
"--------------- write1 ------------------------" 131 allocate(metaanddata(2))
134 level=
dbalevel(level1=105, l1=2000) &
136 ,ana=
dbaana(lon=10.d0,lat=45.d0) &
142 allocate (metaanddata(1)%dataattrv%dataattr(2))
145 allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=
dbadatai(
"B13003",85))
148 allocate (attrv%dcv(3))
149 allocate (attrv%dcv(1)%dat,source=
dbadatar(
"*B33192",30.))
150 allocate (attrv%dcv(2)%dat,source=
dbadatai(
"*B33193",50))
151 allocate (attrv%dcv(3)%dat,source=
dbadatar(
"*B33194",70.))
153 metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
156 allocate (metaanddata(1)%dataattrv%dataattr(2)%dat,source=
dbadatai(
"B12101",27315))
158 deallocate(attrv%dcv)
159 allocate (attrv%dcv(2))
160 allocate (attrv%dcv(1)%dat,source=
dbadatar(
"*B33192",30.))
161 allocate (attrv%dcv(2)%dat,source=
dbadatai(
"*B33193",50))
163 metaanddata(1)%dataattrv%dataattr(2)%attrv=attrv
169 metaanddata(2)%metadata=metaanddata(1)%metadata%dbacontextana()
171 allocate (metaanddata(2)%dataattrv%dataattr(2))
172 allocate (metaanddata(2)%dataattrv%dataattr(1)%dat,source=
dbadatai(
"B07030",223))
173 allocate (metaanddata(2)%dataattrv%dataattr(1)%attrv%dcv(0))
174 allocate (metaanddata(2)%dataattrv%dataattr(2)%dat,source=
dbadatac(
"B01019",
"My beautifull station"))
175 allocate (metaanddata(2)%dataattrv%dataattr(2)%attrv%dcv(0))
180 do i=1,
size(metaanddata)
181 call metaanddata(i)%display()
183 call metaanddata(i)%extrude(session)
187 end subroutine write1
192 type(dbadatar),
allocatable :: data(:)
194 type(dbalevel) :: level
195 type(dbatimerange) :: timerange
197 type(dbanetwork) :: network
198 type(dbadatetime) :: datetime
201 print *,
"----------------------------------------------" 202 print *,
"--------------- write2 ------------------------" 206 call session%unsetall()
212 call timerange%display()
214 ana=
dbaana(lon=11.d0,lat=45.d0)
217 call network%display()
222 call session%set(level=level)
223 call session%set(timerange=timerange)
224 call session%set(ana=ana)
225 call session%set(network=network)
236 allocate (
data(2),source=[
dbadatar(
"B12102",265.33),
dbadatar(
"B12101",273.15)])
240 call data(i)%display()
241 call session%set(data=
data(i))
246 call session%prendilo()
250 call session%close_message()
253 end subroutine write2
258 type(dbametadata) :: metadata
259 type(dbadcv) :: datav
260 type(dbalevel) :: level
261 type(dbatimerange) :: timerange
263 type(dbanetwork) :: network
264 type(dbadatetime) :: datetime
266 print *,
"----------------------------------------------" 267 print *,
"--------------- write3 ------------------------" 271 call session%unsetall()
276 ana=
dbaana(lon=12.d0,lat=45.d0)
282 call metadata%display()
285 call session%set(metadata)
289 call metadata%display()
292 allocate (datav%dcv(2))
293 allocate (datav%dcv(1)%dat,source=
dbadatai(
"B12102",26312))
294 allocate (datav%dcv(2)%dat,source=
dbadatar(
"B12101",273.15))
297 call session%set(datav=datav)
303 call session%prendilo()
307 call session%close_message()
309 end subroutine write3
314 type(dbametadata) :: metadata
315 type(dbadataattrv) :: dataattrv
316 type(dbadcv) :: attrv
317 type(dbadcv) :: datav
319 print *,
"----------------------------------------------" 320 print *,
"--------------- write4 ------------------------" 323 call session%unsetall()
327 level=
dbalevel(level1=105, l1=2000) &
329 ,ana=
dbaana(lon=13.d0,lat=45.d0) &
333 call session%set(metadata)
336 allocate (datav%dcv(2))
337 allocate (datav%dcv(1)%dat,source=
dbadatai(
"B12102",26312))
338 allocate (datav%dcv(2)%dat,source=
dbadatar(
"B12101",273.15))
341 allocate (attrv%dcv(3))
342 allocate (attrv%dcv(1)%dat,source=
dbadatai(
"*B33192",30))
343 allocate (attrv%dcv(2)%dat,source=
dbadatac(
"*B33193",
"70"))
344 allocate (attrv%dcv(3)%dat,source=
dbadatad(
"*B33194",50.d0))
348 allocate (dataattrv%dataattr(2))
350 allocate (dataattrv%dataattr(1)%dat,source=datav%dcv(1)%dat)
351 dataattrv%dataattr(1)%attrv=attrv
353 allocate (dataattrv%dataattr(2)%dat,source=datav%dcv(2)%dat)
354 allocate (dataattrv%dataattr(2)%attrv%dcv(0))
356 call dataattrv%display()
360 call dataattrv%extrude(session)
363 call session%set(metadata%dbacontextana())
367 call dataattrv%extrude(session)
369 end subroutine write4
374 type(dbafilter) :: filter
376 print *,
"----------------------------------------------" 377 print *,
"--------------- delete1 ----------------------" 380 call session%set(filter=filter)
381 call session%dissolve()
383 end subroutine delete1
388 type(dbametadata),
allocatable :: metadata(:)
389 type(dbafilter) :: filter
391 print *,
"----------------------------------------------" 392 print *,
"--------------- delete2 ----------------------" 395 allocate(metadata(1))
398 level=
dbalevel(level1=105, l1=2000) &
400 ,ana=
dbaana(lon=11.d0,lat=45.d0) &
406 call session%set(filter=filter)
407 call session%dissolve(metadata)
411 end subroutine delete2
417 type(dbametadata),
allocatable :: metadata(:)
418 type(dbafilter) :: filter
420 print *,
"----------------------------------------------" 421 print *,
"--------------- delete3 ----------------------" 424 allocate(metadata(1))
427 level=
dbalevel(level1=105, l1=2000) &
429 ,ana=
dbaana(lon=13.d0,lat=45.d0) &
433 filter=
dbafilter(var=
"B12102",starvarlist=
"*B33194,*B33193")
434 call session%set(filter=filter)
435 call session%dissolveattr(metadata)
439 end subroutine delete3
443 type(dbametaanddata),
allocatable:: metaanddatav(:)
446 print *,
"----------------------------------------------" 447 print *,
"--------------- copy1f ----------------------" 450 call sessionfrom%filerewind()
453 call sessionfrom%ingest(metaanddatav)
454 do while (
size(metaanddatav) >0)
455 print*,
"read/write data; count: ",sessionfrom%count
456 do i =1,
size(metaanddatav)
457 print *,
"display metaanddatav index: ", i
460 call metaanddatav(i)%extrude(sessionto)
463 call sessionfrom%ingest(metaanddatav)
465 deallocate (metaanddatav)
468 call sessionfrom%filerewind()
470 call sessionfrom%set(filter=
dbafilter(contextana=.true.))
471 call sessionfrom%ingest(metaanddatav)
472 do while (
size(metaanddatav) >0)
473 print*,
"read/write data; count: ",sessionfrom%count
474 do i =1,
size(metaanddatav)
475 print *,
"display metaanddatav index: ", i
478 call metaanddatav(i)%extrude(sessionto)
481 call sessionfrom%ingest(metaanddatav)
484 end subroutine copy1f
487 subroutine copy1fmem()
488 type(dbametaanddata),
allocatable :: metaanddatav(:)
490 print *,
"----------------------------------------------" 491 print *,
"--------------- copy1fmem ----------------------" 494 do while (sessionfrom%messages_read_next())
505 call sessionfrom%set(filter=
dbafilter(contextana=.true.))
506 call sessionfrom%ingest(metaanddatav)
512 call sessionfrom%remove_all()
515 end subroutine copy1fmem
517 end program dballe_test
Class for expressing an absolute time value.
Classi per la gestione delle coordinate temporali.
character version for dbadata
doubleprecision version for dbadata
filter to apply before ingest data
Global log4fortran destructor.
manage connection handle to a DSN
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.