8 type(dbasession) :: session, sessionfrom,sessionto
9 type(dbaconnection) :: connection ,connectionfrom
10 integer :: ier, category
11 CHARACTER(len=512) :: a_name
14 call l4f_launcher(a_name,a_name_force=
"dballe_test")
18 category=l4f_category_get(a_name//
".main")
21 connection=
dbaconnection(dsn=
"sqlite:dballe_test.sqlite?wipe=true")
22 session=
dbasession(connection,wipe=.true.,write=.true.)
32 call connection%delete()
35 session=
dbasession(filename=
"dballe_test.bufr",wipe=.true.,write=.true.,memdb=.false.)
46 sessionfrom=
dbasession(filename=
"dballe_test.bufr",memdb=.false.)
48 sessionto=
dbasession(filename=
"dballe_test_copy1f.bufr",wipe=.true.,write=.true.,memdb=.false.)
51 call sessionto%delete()
52 call sessionfrom%delete()
57 sessionfrom=
dbasession(connectionfrom,wipe=.true.,write=.true.)
58 call sessionfrom%messages_open_input(filename=
"dballe_test.bufr",mode=
"r",format=
"BUFR",simplified=.true.)
60 sessionto=
dbasession(filename=
"dballe_test_copy1fmem.bufr",wipe=.true.,write=.true.,memdb=.false.)
63 call sessionfrom%delete()
64 call connectionfrom%delete()
65 call sessionto%delete()
68 CALL l4f_category_delete(category)
75 type(dbasession) :: sessionana
76 type(dbaanalist) :: anal
81 sessionana=
dbasession(filename=
"dballe_test_ana.bufr",wipe=.true.,write=.true.,memdb=.false.)
84 call anal%append(
dbaana(lon=11.d0,lat=45.d0))
85 call anal%append(
dbaana(lon=12.d0,lat=45.d0))
86 call anal%append(
dbaana(lon=13.d0,lat=45.d0))
92 do while (anal%element())
95 call ana%extrude(sessionana)
99 call sessionana%delete()
102 end subroutine write0
107 type(dbametaanddata),
allocatable :: metaanddata(:)
108 type(dbadcv) :: attrv
111 print *,
"----------------------------------------------" 112 print *,
"--------------- write1 ------------------------" 114 allocate(metaanddata(2))
117 level=
dbalevel(level1=105, l1=2000) &
119 ,ana=
dbaana(lon=10.d0,lat=45.d0) &
125 allocate (metaanddata(1)%dataattrv%dataattr(2))
128 allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=
dbadatai(
"B13003",85))
131 allocate (attrv%dcv(3))
132 allocate (attrv%dcv(1)%dat,source=
dbadatar(
"*B33192",30.))
133 allocate (attrv%dcv(2)%dat,source=
dbadatai(
"*B33193",50))
134 allocate (attrv%dcv(3)%dat,source=
dbadatar(
"*B33194",70.))
136 metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
139 allocate (metaanddata(1)%dataattrv%dataattr(2)%dat,source=
dbadatai(
"B12101",27315))
141 deallocate(attrv%dcv)
142 allocate (attrv%dcv(2))
143 allocate (attrv%dcv(1)%dat,source=
dbadatar(
"*B33192",30.))
144 allocate (attrv%dcv(2)%dat,source=
dbadatai(
"*B33193",50))
146 metaanddata(1)%dataattrv%dataattr(2)%attrv=attrv
152 metaanddata(2)%metadata=metaanddata(1)%metadata%dbacontextana()
154 allocate (metaanddata(2)%dataattrv%dataattr(2))
155 allocate (metaanddata(2)%dataattrv%dataattr(1)%dat,source=
dbadatai(
"B07030",223))
156 allocate (metaanddata(2)%dataattrv%dataattr(1)%attrv%dcv(0))
157 allocate (metaanddata(2)%dataattrv%dataattr(2)%dat,source=
dbadatac(
"B01019",
"My beautifull station"))
158 allocate (metaanddata(2)%dataattrv%dataattr(2)%attrv%dcv(0))
163 do i=1,
size(metaanddata)
164 call metaanddata(i)%display()
166 call metaanddata(i)%extrude(session)
170 end subroutine write1
175 type(dbadatar),
allocatable :: data(:)
177 type(dbalevel) :: level
178 type(dbatimerange) :: timerange
180 type(dbanetwork) :: network
181 type(dbadatetime) :: datetime
184 print *,
"----------------------------------------------" 185 print *,
"--------------- write2 ------------------------" 189 call session%unsetall()
195 call timerange%display()
197 ana=
dbaana(lon=11.d0,lat=45.d0)
200 call network%display()
205 call session%set(level=level)
206 call session%set(timerange=timerange)
207 call session%set(ana=ana)
208 call session%set(network=network)
219 allocate (
data(2),source=[
dbadatar(
"B12102",265.33),
dbadatar(
"B12101",273.15)])
223 call data(i)%display()
224 call session%set(data=
data(i))
229 call session%prendilo()
233 call session%close_message()
236 end subroutine write2
241 type(dbametadata) :: metadata
242 type(dbadcv) :: datav
243 type(dbalevel) :: level
244 type(dbatimerange) :: timerange
246 type(dbanetwork) :: network
247 type(dbadatetime) :: datetime
249 print *,
"----------------------------------------------" 250 print *,
"--------------- write3 ------------------------" 254 call session%unsetall()
259 ana=
dbaana(lon=12.d0,lat=45.d0)
265 call metadata%display()
268 call session%set(metadata)
272 call metadata%display()
275 allocate (datav%dcv(2))
276 allocate (datav%dcv(1)%dat,source=
dbadatai(
"B12102",26312))
277 allocate (datav%dcv(2)%dat,source=
dbadatar(
"B12101",273.15))
280 call session%set(datav=datav)
286 call session%prendilo()
290 call session%close_message()
292 end subroutine write3
297 type(dbametadata) :: metadata
298 type(dbadataattrv) :: dataattrv
299 type(dbadcv) :: attrv
300 type(dbadcv) :: datav
302 print *,
"----------------------------------------------" 303 print *,
"--------------- write4 ------------------------" 306 call session%unsetall()
310 level=
dbalevel(level1=105, l1=2000) &
312 ,ana=
dbaana(lon=13.d0,lat=45.d0) &
316 call session%set(metadata)
319 allocate (datav%dcv(2))
320 allocate (datav%dcv(1)%dat,source=
dbadatai(
"B12102",26312))
321 allocate (datav%dcv(2)%dat,source=
dbadatar(
"B12101",273.15))
324 allocate (attrv%dcv(3))
325 allocate (attrv%dcv(1)%dat,source=
dbadatai(
"*B33192",30))
326 allocate (attrv%dcv(2)%dat,source=
dbadatac(
"*B33193",
"70"))
327 allocate (attrv%dcv(3)%dat,source=
dbadatad(
"*B33194",50.d0))
331 allocate (dataattrv%dataattr(2))
333 allocate (dataattrv%dataattr(1)%dat,source=datav%dcv(1)%dat)
334 dataattrv%dataattr(1)%attrv=attrv
336 allocate (dataattrv%dataattr(2)%dat,source=datav%dcv(2)%dat)
337 allocate (dataattrv%dataattr(2)%attrv%dcv(0))
339 call dataattrv%display()
343 call dataattrv%extrude(session)
346 call session%set(metadata%dbacontextana())
350 call dataattrv%extrude(session)
352 end subroutine write4
357 type(dbafilter) :: filter
359 print *,
"----------------------------------------------" 360 print *,
"--------------- delete1 ----------------------" 363 call session%set(filter=filter)
364 call session%dissolve()
366 end subroutine delete1
371 type(dbametadata),
allocatable :: metadata(:)
372 type(dbafilter) :: filter
374 print *,
"----------------------------------------------" 375 print *,
"--------------- delete2 ----------------------" 378 allocate(metadata(1))
381 level=
dbalevel(level1=105, l1=2000) &
383 ,ana=
dbaana(lon=11.d0,lat=45.d0) &
389 call session%set(filter=filter)
390 call session%dissolve(metadata)
394 end subroutine delete2
400 type(dbametadata),
allocatable :: metadata(:)
401 type(dbafilter) :: filter
403 print *,
"----------------------------------------------" 404 print *,
"--------------- delete3 ----------------------" 407 allocate(metadata(1))
410 level=
dbalevel(level1=105, l1=2000) &
412 ,ana=
dbaana(lon=13.d0,lat=45.d0) &
416 filter=
dbafilter(var=
"B12102",starvarlist=
"*B33194,*B33193")
417 call session%set(filter=filter)
418 call session%dissolveattr(metadata)
422 end subroutine delete3
426 type(dbametaanddata),
allocatable:: metaanddatav(:)
429 print *,
"----------------------------------------------" 430 print *,
"--------------- copy1f ----------------------" 433 call sessionfrom%filerewind()
436 call sessionfrom%ingest(metaanddatav)
437 do while (
size(metaanddatav) >0)
438 print*,
"read/write data; count: ",sessionfrom%count
439 do i =1,
size(metaanddatav)
440 print *,
"display metaanddatav index: ", i
443 call metaanddatav(i)%extrude(sessionto)
446 call sessionfrom%ingest(metaanddatav)
448 deallocate (metaanddatav)
451 call sessionfrom%filerewind()
453 call sessionfrom%set(filter=
dbafilter(contextana=.true.))
454 call sessionfrom%ingest(metaanddatav)
455 do while (
size(metaanddatav) >0)
456 print*,
"read/write data; count: ",sessionfrom%count
457 do i =1,
size(metaanddatav)
458 print *,
"display metaanddatav index: ", i
461 call metaanddatav(i)%extrude(sessionto)
464 call sessionfrom%ingest(metaanddatav)
467 end subroutine copy1f
470 subroutine copy1fmem()
471 type(dbametaanddata),
allocatable :: metaanddatav(:)
473 print *,
"----------------------------------------------" 474 print *,
"--------------- copy1fmem ----------------------" 477 do while (sessionfrom%messages_read_next())
488 call sessionfrom%set(filter=
dbafilter(contextana=.true.))
489 call sessionfrom%ingest(metaanddatav)
495 call sessionfrom%remove_all()
498 end subroutine copy1fmem
500 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
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.