Programma esempio semplice per la scrittura su file di un volume vol7d Programma che scrive su file un volume vol7d letto da una serie di file ASCII. Questo programma scrive i dati del clima che poi verranno letti da modqccli
34 integer,
parameter :: cli_nsuperarea=3
36 character(len=2) :: minuti(3)
37 character(len=1) :: area(3)
39 character(len=80) ::filename
43 integer :: nana, ntime ,nlevel, ndativarr, nnetwork
44 integer :: iana, itime, ilevel, itimerange, idativarr, inetwork
45 integer,
parameter :: ntimerange=3 ,nperc=9
47 TYPE(vol7d_dballe) :: v7d_dballe
49 TYPE(datetime) :: time
50 TYPE(vol7d_level) :: level(cli_nlevel)
51 TYPE(vol7d_timerange) :: timerange(ntimerange)
52 TYPE(vol7d_network) :: network
53 TYPE(vol7d_var) :: dativar,anavar
54 CHARACTER(len=vol7d_ana_lenident) :: ident
55 REAL(kind=fp_geo) :: lat,lon
60 integer :: scadenze(ntimerange) = (/900,1800,3600/)
64 type(l4f_handle) :: category
65 character(len=512):: a_name
67 call l4f_launcher(a_name,a_name_force=
"qc_convert")
73 category=l4f_category_get_handle(a_name//
".main")
75 call l4f_category_log(category,l4f_info,
"inizio")
80 nana=nperc*cli_nsuperarea
88 call vol7d_alloc (v7d, &
89 nana=nana, ntime=ntime, ntimerange=ntimerange, &
90 nlevel=nlevel, nnetwork=nnetwork, &
94 call vol7d_alloc_vol (v7d,ini=.true.)
108 call init(v7d%network(inetwork),
'climat')
109 call init(v7d%dativar%r(idativarr), btable=
"B13011")
111 call cli_level_generate(v7d%level)
114 do iarea = 1, cli_nsuperarea
115 do ilevel = 1,cli_nlevel
116 do itimerange=1,ntimerange
118 call init(v7d%timerange(itimerange), 1, 0,scadenze(itimerange))
120 filename =
"pctl_prec_"//minuti(itimerange)//
"m_all_"//area(iarea)
121 write (filename(20:) ,
"(i1.1)")ilevel-1
122 filename =filename(:20)//
".txt" 123 filename=
"/autofs/nethomes/pavan/cq_emr/percentili/"//filename
125 print *,
"apro file=",filename
126 open (unit=iunit,file=filename)
130 call init(v7d%time(itime), year=1001, month=itime, day=1, hour=0, minute=0)
140 write(ident,
'("BOX-",2i2.2)')iarea,iper*10
141 iana=iper+(iarea-1)*nperc
143 call init(v7d%ana(iana),lat=lat,lon=lon,ident=ident)
145 read (iunit,
"(10x,f7.0)") dato
146 if (dato == -999.9) dato=rmiss
149 v7d%voldatir(iana,itime,ilevel,itimerange,idativarr,inetwork) = ilevel
159 open (unit=iunit,file=
"climaprec.v7d", form=
'UNFORMATTED', access=
'STREAM')
161 call export(v7d,unit=iunit)
165 filename=
"climaprec.bufr" 166 call init(v7d_dballe,file=.true.,wipe=.true.,write=.true.,filename=filename,categoryappend=
"esporto",template=
"generic")
167 call copy(v7d,v7d_dballe%vol7d)
174 call l4f_category_delete(category)