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
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.