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

Generated with Doxygen.