18 PROGRAM v7ddballe_import_export
26 TYPE(vol7d_dballe) :: v7d,v7d_exp
27 TYPE(datetime) :: ti, tf
30 TYPE(vol7d_ana) :: ana
31 TYPE(datetime) :: time
32 TYPE(vol7d_level) :: level
33 TYPE(vol7d_timerange) :: timerange
34 TYPE(vol7d_network) :: network
35 TYPE(vol7d_var) :: dativar,attrvar
36 CHARACTER(len=vol7d_ana_lenident) :: ident
37 REAL(kind=fp_geo) :: lat,lon
39 integer :: indana,indtime,indlevel,indtimerange,inddativar,indnetwork
40 integer :: inddatiattr,inddativarattr
44 CALL init(ti, year=2007, month=3, day=18, hour=12)
45 CALL init(tf, year=2007, month=3, day=21, hour=00)
47 call init(network,
"generic")
53 CALL init(v7d_exp,dsn=
"test",user=
"test",write=.true.,wipe=.false.)
57 CALL import(v7d,var=(/
"B13003",
"B13011",
"B12101"/),varkind=(/
"d",
"r",
"r"/), network=network, timei=ti, timef=tf&
58 ,attr=(/
"*B33192",
"*B33007"/),attrkind=(/
"i",
"b"/))
72 print *,
"Fine estrazione dati"
80 if (
associated(v7d%data_id))
then
82 print *,
"data id shape",sh
84 allocate (v7d_exp%data_id(sh(1),sh(2),sh(3),sh(4),sh(5)))
88 v7d_exp%vol7d = v7d%vol7d
96 call init(ana,lat=lat,lon=lon,ident=ident)
97 call init(time, year=2007, month=3, day=18, hour=00,minute=30)
98 call init(level, 105,2,0)
99 call init(timerange, 0, 0, 0)
100 call init(network,
'rete50')
101 call init(dativar,
"B12101" )
102 call init(attrvar,
"*B33192" )
105 indana =
index(v7d%vol7d%ana, ana)
106 indtime =
index(v7d%vol7d%time, time)
107 indtimerange =
index(v7d%vol7d%timerange, timerange)
108 indlevel =
index(v7d%vol7d%level, level)
109 indnetwork =
index(v7d%vol7d%network, network)
110 inddativar =
index(v7d%vol7d%dativar%r, dativar)
112 print *,
"modifico questo dato ", indana,indtime,indlevel,indtimerange,indnetwork
114 if (indana == 0 .or. indtime == 0 .or. indlevel == 0 .or. indtimerange == 0 .or. indnetwork == 0)
then
115 call raise_error(
"data not found")
118 if (any(shape(v7d%vol7d%datiattr)>0))
then
119 inddativarattr =
index(v7d%vol7d%dativarattr%b, dativar)
120 inddatiattr =
index(v7d%vol7d%datiattr%b, attrvar)
122 if (inddativarattr == 0 .or. inddatiattr == 0)
then
123 call raise_error(
"attribute not found")
127 call raise_error(
"all attribute are missing")
132 v7d_exp%vol7d%voldatiattrb(indana,indtime,indlevel,indtimerange,&
133 inddativarattr,indnetwork,inddatiattr) = 96
136 if (
associated(v7d_exp%data_id))
then
137 v7d_exp%data_id(indana,indtime,indlevel,indtimerange,indnetwork)=&
138 v7d%data_id(indana,indtime,indlevel,indtimerange,indnetwork)
141 print *,
"Scrivo i dati"
148 END PROGRAM v7ddballe_import_export
Distruttori per le 2 classi.
Costruttori per le classi datetime e timedelta.
Classi per la gestione delle coordinate temporali.
Classe per la gestione di un volume completo di dati osservati.
classe per import ed export di volumi da e in DB-All.e