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