10 type(dbasession) :: session, sessionfrom,sessionto
11 type(dbaconnection) :: connection ,connectionfrom
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)
88 type(dbasession) :: sessionana
89 type(dbaanalist) :: anal
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
123 type(dbametaanddata),
allocatable :: metaanddata(:)
124 type(dbadcv) :: attrv
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) &
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(:)
193 type(dbalevel) :: level
194 type(dbatimerange) :: timerange
196 type(dbanetwork) :: network
197 type(dbadatetime) :: datetime
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()
221 call session%set(level=level)
222 call session%set(timerange=timerange)
223 call session%set(ana=ana)
224 call session%set(network=network)
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
257 type(dbametadata) :: metadata
258 type(dbadcv) :: datav
259 type(dbalevel) :: level
260 type(dbatimerange) :: timerange
262 type(dbanetwork) :: network
263 type(dbadatetime) :: datetime
265 print *,
"----------------------------------------------"
266 print *,
"--------------- write3 ------------------------"
270 call session%unsetall()
275 ana=
dbaana(lon=12.d0,lat=45.d0)
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
313 type(dbametadata) :: metadata
314 type(dbadataattrv) :: dataattrv
315 type(dbadcv) :: attrv
316 type(dbadcv) :: datav
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) &
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
373 type(dbafilter) :: filter
375 print *,
"----------------------------------------------"
376 print *,
"--------------- delete1 ----------------------"
379 call session%set(filter=filter)
380 call session%dissolve()
382 end subroutine delete1
387 type(dbametadata),
allocatable :: metadata(:)
388 type(dbafilter) :: filter
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) &
405 call session%set(filter=filter)
406 call session%dissolve(metadata)
410 end subroutine delete2
416 type(dbametadata),
allocatable :: metadata(:)
417 type(dbafilter) :: filter
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) &
432 filter=
dbafilter(var=
"B12102",starvarlist=
"*B33194,*B33193")
433 call session%set(filter=filter)
434 call session%dissolveattr(metadata)
438 end subroutine delete3
442 type(dbametaanddata),
allocatable:: metaanddatav(:)
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()
487 type(dbametaanddata),
allocatable :: metaanddatav(:)
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
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
Class for expressing an absolute time value.
manage connection handle to a DSN
character version for dbadata
doubleprecision version for dbadata
integer version for dbadata
filter to apply before ingest data