libsim Versione 8.0.0
dballe_test3.F03
1#include "config.h"
2
3program dballe_test3
4
9implicit none
10
11type(dbasession) :: session, sessionto
12type(dbaconnection) :: connection
13TYPE(l4f_handle) :: category
14INTEGER :: ier
15CHARACTER(len=512) :: a_name
16
17!questa chiamata prende dal launcher il nome univoco
18call l4f_launcher(a_name,a_name_force="dballe_test")
19!init di log4fortran
20ier=l4f_init()
21!imposta a_name
22category=l4f_category_get_handle(trim(a_name)//".main")
23
24! connect to dsn type DBA
25connection=dbaconnection(dsn="sqlite:dballe_test.sqlite")
26session=dbasession(connection,wipe=.true.,write=.true.)
27call write() ! write etherogeneous ensamble of data with attributes using macro object
28
29! connect to dsn type BUFR file for write
30sessionto=dbasession(filename="dballe_test3.bufr",wipe=.true.,write=.true.,memdb=.false.,template="generic")
31call export2bufrwithfilter()
32
33# ifndef F2003_FULL_FEATURES
34!close everythings
35call sessionto%delete()
36call session%delete()
37call connection%delete()
38#endif
39
40
41!chiudo il logger
42CALL l4f_category_delete(category)
43ier=l4f_fini()
44
45contains
46
47subroutine write()
48
49type(dbametaanddata),allocatable :: metaanddata(:)
50type(dbadcv) :: attrv
51integer :: i
52
53print *,"----------------------------------------------"
54print *,"--------------- write ------------------------"
55
56allocate(metaanddata(1)) ! one metadata for data and one for constant data
57
58metaanddata(1)%metadata=dbametadata( &
59 level=dbalevel(level1=105, l1=2000) &
60 ,timerange=dbatimerange(timerange=4, p1=3600,p2=7200) &
61 ,ana=dbaana(lon=10.d0,lat=45.d0) &
62 ,network=dbanetwork("generic") &
63 ,datetime=dbadatetime(datetime_new(2014,01,06,18,00)))
64
65!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
66! allocate data
67allocate (metaanddata(1)%dataattrv%dataattr(2))
68
69! first data
70allocate (metaanddata(1)%dataattrv%dataattr(1)%dat,source=dbadatai("B13003",85))
71! second data
72allocate (metaanddata(1)%dataattrv%dataattr(2)%dat,source=dbadatai("B12101",27315))
73
74! create an etherogeneous ensamble of attr
75allocate (attrv%dcv(3))
76allocate (attrv%dcv(1)%dat,source=dbadatar("*B33192",30.))
77allocate (attrv%dcv(2)%dat,source=dbadatai("*B33193",50))
78allocate (attrv%dcv(3)%dat,source=dbadatar("*B33194",70.))
79!assemble data and attribute
80metaanddata(1)%dataattrv%dataattr(1)%attrv=attrv
81metaanddata(1)%dataattrv%dataattr(2)%attrv=attrv
82
83!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
84
85!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
86! display and save everythings
87do i=1,size(metaanddata)
88 call metaanddata(i)%display()
89 !call session%extrude(metaanddata=metaanddata(i))
90 call metaanddata(i)%extrude(session)
91end do
92!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
93
94end subroutine write
95
96
97subroutine export2bufrwithfilter
98type(dbametaanddata), allocatable:: metaanddatav(:)
99type(dbadcv) :: vars,starvars
100type(dbafilter) filter
101
102integer :: i
103
104print *,"----------------------------------------------"
105print *,"--------------- export2bufr ------------------------"
106
107allocate (vars%dcv(1))
108allocate (vars%dcv(1)%dat,source=dbadatai("B12101"))
109
110allocate (starvars%dcv(2))
111allocate (starvars%dcv(1)%dat,source=dbadatab("*B33193"))
112allocate (starvars%dcv(2)%dat,source=dbadatab("*B33194"))
113
114filter=dbafilter()
115call filter%display()
116call session%ingest(metaanddatav,filter=filter)
117do i=1,size(metaanddatav)
118 call metaanddatav(i)%display()
119 call metaanddatav(i)%extrude(sessionto)
120end do
121
122
123filter=dbafilter(vars=vars)
124call filter%display()
125call session%ingest(metaanddatav,filter=filter)
126do i=1,size(metaanddatav)
127 call metaanddatav(i)%display()
128 call metaanddatav(i)%extrude(sessionto)
129end do
130
131
132filter=dbafilter(vars=vars,starvars=starvars)
133call filter%display()
134call session%ingest(metaanddatav,filter=filter)
135do i=1,size(metaanddatav)
136 call metaanddatav(i)%display()
137 call metaanddatav(i)%extrude(sessionto)
138end do
139
140
141filter=dbafilter(starvars=starvars)
142call filter%display()
143call session%ingest(metaanddatav,filter=filter)
144do i=1,size(metaanddatav)
145 call metaanddatav(i)%display()
146 call metaanddatav(i)%extrude(sessionto)
147end do
148
149end subroutine export2bufrwithfilter
150
151end program dballe_test3
Global log4fortran destructor.
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
Definitions of constants and functions for working with missing values.
Class for expressing an absolute time value.
manage connection handle to a DSN
byte version for dbadata
integer version for dbadata
real version for dbadata
filter to apply before ingest data
summ of all metadata pieces
manage session handle

Generated with Doxygen.