libsim  Versione 7.2.4
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
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.