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