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