89 use vol7d_serialize_dballe_class
93 character (len=255),
parameter:: subcategory=
"vol7d_dballe_class" 105 type(dbaconnection) :: idbhandle
106 type(dbasession) :: handle
109 integer ,
pointer :: data_id(:,:,:,:,:)
110 integer :: time_definition
111 type(l4f_handle) :: category
116 INTEGER,
PARAMETER,
PRIVATE :: nftype = 2
117 CHARACTER(len=16),
PARAMETER,
PRIVATE :: &
118 pathlist(2,nftype) = reshape((/ &
119 '/usr/share ',
'/usr/local/share', &
120 '/etc ',
'/usr/local/etc ' /), &
124 type(vol7d_var),
allocatable,
private :: blocal(:)
126 CHARACTER(len=20),
PRIVATE :: dballe_name=
'wreport', dballe_name_env=
'DBA_TABLES' 131 MODULE PROCEDURE vol7d_dballe_init
136 MODULE PROCEDURE vol7d_dballe_delete
142 MODULE PROCEDURE vol7d_dballe_importvvnv,vol7d_dballe_import, vol7d_dballe_import_old, dba2v7d
147 MODULE PROCEDURE vol7d_dballe_export_old,vol7d_dballe_export, v7d2dba
158 SUBROUTINE vol7d_dballe_init(this,dsn,user,password,write,wipe,repinfo,&
159 filename,format,file,categoryappend,time_definition,idbhandle,template)
162 TYPE(vol7d_dballe),
INTENT(out) :: this
163 character(len=*),
INTENT(in),
OPTIONAL :: dsn
164 character(len=*),
INTENT(in),
OPTIONAL :: user
165 character(len=*),
INTENT(in),
OPTIONAL :: password
166 logical,
INTENT(in),
OPTIONAL :: write
167 logical,
INTENT(in),
OPTIONAL :: wipe
168 character(len=*),
INTENT(in),
OPTIONAL :: repinfo
169 character(len=*),
intent(inout),
optional :: filename
170 character(len=*),
intent(in),
optional :: format
171 logical,
INTENT(in),
OPTIONAL :: file
172 character(len=*),
INTENT(in),
OPTIONAL :: categoryappend
173 integer,
INTENT(in),
OPTIONAL :: time_definition
174 integer,
INTENT(in),
OPTIONAL :: idbhandle
177 character(len=*),
intent(in),
optional :: template
179 logical :: quiwrite,loadfile
180 character(len=512) :: a_name
181 character(len=254) :: arg,lfilename,lformat
184 if (
present(write))
then 188 if (
present(categoryappend))
then 189 call l4f_launcher(a_name,a_name_append=trim(subcategory)//
"."//trim(categoryappend))
191 call l4f_launcher(a_name,a_name_append=trim(subcategory))
193 this%category=l4f_category_get_handle(a_name)
199 nullify(this%data_id)
201 if (optio_log(file))
then 206 if (
present(format))
then 212 lfilename=trim(arg)//
"."//trim(lformat)
213 if (
index(arg,
'/',back=.true.) > 0) lfilename=lfilename(
index(arg,
'/',back=.true.)+1 : )
215 if (
present(filename))
then 216 if (
c_e(filename))
then 228 this%handle=
dbasession(wipe=wipe,write=quiwrite,repinfo=repinfo, &
229 filename=lfilename,format=lformat,template=template, &
230 memdb=.true.,loadfile=loadfile)
235 this%idbhandle=
dbaconnection(dsn,user,password,idbhandle=idbhandle)
236 this%handle=
dbasession(this%idbhandle,wipe=wipe,write=quiwrite,repinfo=repinfo)
244 CALL init(this%vol7d, time_definition)
245 this%time_definition = optio_i(time_definition)
251 END SUBROUTINE vol7d_dballe_init
259 SUBROUTINE vol7d_dballe_importvvnv(this, var, network, coordmin,coordmax, timei, timef, level,timerange,set_network,&
260 attr,anavar,anaattr, varkind,attrkind,anavarkind,anaattrkind,anaonly,dataonly,ana)
261 TYPE(vol7d_dballe),
INTENT(inout) :: this
262 CHARACTER(len=*),
INTENT(in) :: var(:)
263 TYPE(geo_coord),
INTENT(inout),
optional :: coordmin,coordmax
264 TYPE(vol7d_ana),
INTENT(inout),
optional :: ana
265 TYPE(datetime),
INTENT(in),
optional :: timei, timef
266 TYPE(vol7d_network),
INTENT(in) :: network(:)
267 TYPE(vol7d_network),
INTENT(in),
OPTIONAL :: set_network
268 TYPE(vol7d_level),
INTENT(in),
optional :: level
269 TYPE(vol7d_timerange),
INTENT(in),
optional :: timerange
270 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: attr(:),anavar(:),anaattr(:)
271 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: varkind(:),attrkind(:),anavarkind(:),anaattrkind(:)
272 logical,
intent(in),
optional :: anaonly
273 LOGICAL,
INTENT(in),
OPTIONAL :: dataonly
274 TYPE(vol7d_dballe) :: v7ddbatmp
278 IF (
SIZE(network) == 0 )
THEN 279 CALL import(this, var, coordmin=coordmin, coordmax=coordmax, timei=timei, &
280 timef=timef, level=level, timerange=timerange, set_network=set_network, &
281 attr=attr, anavar=anavar, anaattr=anaattr, varkind=varkind, attrkind=attrkind, &
282 anavarkind=anavarkind, anaattrkind=anaattrkind, anaonly=anaonly, &
283 dataonly=dataonly, ana=ana)
285 CALL init(this%vol7d)
287 DO i = 1,
SIZE(network)
288 CALL import(v7ddbatmp, var, network(i), coordmin, coordmax, timei, timef, &
289 level,timerange, set_network, attr,anavar,anaattr, varkind, attrkind, &
290 anavarkind, anaattrkind, anaonly, dataonly, ana)
291 CALL vol7d_merge(this%vol7d, v7ddbatmp%vol7d,
sort=.true.)
295 END SUBROUTINE vol7d_dballe_importvvnv
298 SUBROUTINE vol7d_dballe_import_old(this, var, network, coordmin, coordmax, timei, timef,level,timerange, set_network,&
299 attr,anavar,anaattr, varkind,attrkind,anavarkind,anaattrkind,anaonly,dataonly,ana)
301 TYPE(vol7d_dballe),
INTENT(inout) :: this
302 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: var(:)
303 TYPE(
geo_coord),
INTENT(inout),
optional :: coordmin,coordmax
304 TYPE(vol7d_ana),
INTENT(inout),
optional :: ana
305 TYPE(datetime),
INTENT(in),
OPTIONAL :: timei, timef
306 TYPE(vol7d_network),
INTENT(in),
OPTIONAL :: network,set_network
307 TYPE(vol7d_level),
INTENT(in),
optional :: level
308 TYPE(vol7d_timerange),
INTENT(in),
optional :: timerange
309 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: attr(:),anavar(:),anaattr(:)
310 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: varkind(:),attrkind(:),anavarkind(:),anaattrkind(:)
311 logical,
intent(in),
optional :: anaonly
312 logical,
intent(in),
optional :: dataonly
315 INTEGER,
PARAMETER :: maxvarlist=100
328 type(dbadcv) :: vars,starvars,anavars,anastarvars
329 type(dbafilter) :: filter
330 type(dbacoord) :: mydbacoordmin, mydbacoordmax
331 type(dbaana) :: mydbaana
332 type(dbadatetime) :: mydatetimemin, mydatetimemax
333 type(dbatimerange) :: mydbatimerange
334 type(dbalevel) :: mydbalevel
335 type(dbanetwork) :: mydbanetwork
337 integer :: nanaattr,nattr
339 character(len=40) :: query
346 IF (
PRESENT(set_network))
THEN 347 if (
c_e(set_network))
then 379 if (
present(var))
then 382 allocate (vars%dcv(nvar))
385 if (
present(varkind))
then 386 select case (varkind(i))
388 allocate (vars%dcv(i)%dat,source=
dbadatar(var(i)))
390 allocate (vars%dcv(i)%dat,source=
dbadatai(var(i)))
392 allocate (vars%dcv(i)%dat,source=
dbadatab(var(i)))
394 allocate (vars%dcv(i)%dat,source=
dbadatad(var(i)))
396 allocate (vars%dcv(i)%dat,source=
dbadatac(var(i)))
399 CALL raise_fatal_error()
402 allocate (vars%dcv(i)%dat,source=
dbadatac(var(i)))
409 if (
present(anavar))
then 410 nanavar=count(
c_e(anavar))
411 if (nanavar > 0)
then 412 allocate (anavars%dcv(nanavar))
414 if (
c_e(anavar(i)))
then 415 if (
present(anavarkind))
then 416 select case (anavarkind(i))
418 allocate (anavars%dcv(i)%dat,source=
dbadatar(anavar(i)))
420 allocate (anavars%dcv(i)%dat,source=
dbadatai(anavar(i)))
422 allocate (anavars%dcv(i)%dat,source=
dbadatab(anavar(i)))
424 allocate (anavars%dcv(i)%dat,source=
dbadatad(anavar(i)))
426 allocate (anavars%dcv(i)%dat,source=
dbadatac(anavar(i)))
428 call l4f_category_log(this%category,l4f_error,
"anavar and anavarkind mismach")
429 CALL raise_fatal_error()
432 allocate (anavars%dcv(i)%dat,source=
dbadatac(anavar(i)))
439 if (
present(attr))
then 442 allocate (starvars%dcv(nattr))
444 nattr=count(
c_e(attr))
446 allocate (starvars%dcv(nattr))
448 if (
c_e(attr(i)))
then 449 if (
present(attrkind))
then 450 select case (attrkind(i))
452 allocate (starvars%dcv(i)%dat,source=
dbadatar(attr(i)))
454 allocate (starvars%dcv(i)%dat,source=
dbadatai(attr(i)))
456 allocate (starvars%dcv(i)%dat,source=
dbadatab(attr(i)))
458 allocate (starvars%dcv(i)%dat,source=
dbadatad(attr(i)))
460 allocate (starvars%dcv(i)%dat,source=
dbadatac(attr(i)))
463 CALL raise_fatal_error()
466 allocate (starvars%dcv(i)%dat,source=
dbadatac(attr(i)))
474 if (
present(anaattr))
then 475 nanaattr=
size(anaattr)
476 if (nanaattr == 0)
then 477 allocate (anastarvars%dcv(nanaattr))
479 nanaattr=count(
c_e(anaattr))
480 if (nanaattr > 0)
then 481 allocate (anastarvars%dcv(nanaattr))
483 if (
c_e(anaattr(i)))
then 484 if (
present(anaattrkind))
then 485 select case (anaattrkind(i))
487 allocate (anastarvars%dcv(i)%dat,source=
dbadatar(anaattr(i)))
489 allocate (anastarvars%dcv(i)%dat,source=
dbadatai(anaattr(i)))
491 allocate (anastarvars%dcv(i)%dat,source=
dbadatab(anaattr(i)))
493 allocate (anastarvars%dcv(i)%dat,source=
dbadatad(anaattr(i)))
495 allocate (anastarvars%dcv(i)%dat,source=
dbadatac(anaattr(i)))
498 CALL raise_fatal_error()
501 allocate (anastarvars%dcv(i)%dat,source=
dbadatac(anaattr(i)))
512 if (
present(coordmin)) mydbacoordmin%geo_coord=coordmin
514 if (
present(coordmax)) mydbacoordmax%geo_coord=coordmax
516 if (
present(ana)) mydbaana%vol7d_ana=ana
518 if (
present(timei)) mydatetimemin%datetime=timei
520 if (
present(timef)) mydatetimemax%datetime=timef
522 if (
present(timerange)) mydbatimerange%vol7d_timerange=timerange
524 if (
present(level)) mydbalevel%vol7d_level=level
526 if (
present(network)) mydbanetwork%vol7d_network=network
531 filter=
dbafilter(coordmin=mydbacoordmin,coordmax=mydbacoordmax,ana=mydbaana, &
532 datetimemin=mydatetimemin,datetimemax=mydatetimemax, &
533 timerange=mydbatimerange,level=mydbalevel,network=mydbanetwork,query=query,&
534 vars=vars,starvars=starvars,anavars=anavars,anastarvars=anastarvars,&
535 dataonly=dataonly,anaonly=anaonly)
539 call import(this,filter,set_network)
542 END SUBROUTINE vol7d_dballe_import_old
547 subroutine vol7d_dballe_import(this,filter,set_network)
549 TYPE(vol7d_dballe),
INTENT(inout) :: this
550 type(dbafilter),
INTENT(in) :: filter
551 TYPE(vol7d_network),
INTENT(in),
OPTIONAL :: set_network
553 TYPE(vol7d) :: vol7dtmp
554 type(dbametaanddata),
allocatable :: metaanddatav(:)
555 type(dbafilter) :: myfilter
559 if ( .not. filter%dataonly)
then 561 myfilter=
dbafilter(filter=filter,contextana=.true.,query=cmiss)
565 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe ingest for constant station data')
567 call this%handle%ingest(metaanddatav,filter=myfilter)
568 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe ingest')
569 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe dba2v7d')
570 call dba2v7d(this%vol7d, metaanddatav,this%time_definition,set_network)
571 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe dba2v7d')
573 deallocate (metaanddatav)
577 call init(this%vol7d)
578 call vol7d_alloc(this%vol7d)
579 call vol7d_alloc_vol(this%vol7d)
583 if ( .not. filter%anaonly)
then 585 myfilter=
dbafilter(filter=filter,contextana=.false.)
590 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe ingest for station data')
592 call this%handle%ingest(metaanddatav,filter=myfilter)
593 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe ingest')
594 CALL l4f_category_log(this%category,l4f_debug,
'start import vol7d_dballe dba2v7d')
595 call dba2v7d(vol7dtmp,metaanddatav,this%time_definition,set_network)
596 CALL l4f_category_log(this%category,l4f_debug,
'end import vol7d_dballe dba2v7d')
598 deallocate (metaanddatav)
600 CALL vol7d_merge(this%vol7d, vol7dtmp,
sort=.true.)
606 call vol7d_dballe_set_var_du(this%vol7d)
625 nullify(this%data_id)
635 this%data_id(indana,indtime,indlevel,indtimerange,indnetwork)=buffer(i)%data_id
638 ier=idba_set(this%handle,
"*context_id",buffer(i)%data_id)
639 ier=idba_set(this%handle,
"*var_related",buffer(i)%btable)
641 ier=idba_set(this%handle,
"*varlist",starvarlist )
642 ier=idba_voglioancora(this%handle,nn)
649 end subroutine vol7d_dballe_import
655 SUBROUTINE vol7d_dballe_delete(this, preserveidbhandle)
656 TYPE(vol7d_dballe) :: this
657 logical,
intent(in),
optional :: preserveidbhandle
659 # ifndef F2003_FULL_FEATURES 660 call this%handle%delete()
662 if (.not. optio_log(preserveidbhandle))
call this%idbhandle%delete()
673 call l4f_category_delete(this%category)
676 END SUBROUTINE vol7d_dballe_delete
682 subroutine dba2v7d(this,metaanddatav,time_definition, set_network)
684 type(dbametaanddata),
intent(inout) :: metaanddatav(:)
685 TYPE(vol7d),
INTENT(inout) :: this
686 integer,
INTENT(in),
OPTIONAL :: time_definition
687 TYPE(vol7d_network),
INTENT(in),
OPTIONAL :: set_network
689 type(dbadcv) :: starvars
690 type(dbadcv) :: anavars
691 type(dbadcv) :: anastarvars
695 integer :: indana,indtime,indlevel,indtimerange,inddativar,indnetwork,indattrvar
697 integer :: nana,ntime,ntimerange,nlevel,nnetwork
699 INTEGER :: i, j, k, n
700 integer :: inddativarattr
701 integer :: nanavar, indanavar,indanavarattr,nanavarattr
703 integer :: ndativarr, ndativari, ndativarb, ndativard, ndativarc
704 integer :: ndatiattrr, ndatiattri, ndatiattrb, ndatiattrd, ndatiattrc
705 integer :: ndativarattrr, ndativarattri, ndativarattrb, ndativarattrd, ndativarattrc
707 integer :: nanavarr, nanavari, nanavarb, nanavard, nanavarc
708 integer :: nanaattrr, nanaattri, nanaattrb, nanaattrd, nanaattrc
709 integer :: nanavarattrr, nanavarattri, nanavarattrb, nanavarattrd, nanavarattrc
711 integer :: ndativar,ndativarattr
713 type(characterlist) :: dativarl,dativarattrl,anavarl,anavarattrl
715 character(len=listcharmaxlen),
allocatable :: dativara(:),dativarattra(:),anavara(:),anavarattra(:)
717 integer :: ltime_definition
719 type(datetime),
allocatable :: tmptime(:)
720 type(vol7d_network),
allocatable :: tmpnetwork(:)
721 type(vol7d_level),
allocatable :: tmplevel(:)
722 type(vol7d_timerange),
allocatable :: tmptimerange(:)
723 type(vol7d_ana),
allocatable :: tmpana(:)
726 ltime_definition=optio_i(time_definition)
727 if (.not.
c_e(ltime_definition)) ltime_definition = 1
730 if (ltime_definition == 0)
then 731 do i =1,
size(metaanddatav)
732 metaanddatav(i)%metadata%datetime%datetime = &
733 metaanddatav(i)%metadata%datetime%datetime - &
734 timedelta_new(sec=metaanddatav(i)%metadata%timerange%vol7d_timerange%p1)
738 if (ltime_definition == 2)
then 739 do i =1,
size(metaanddatav)
740 metaanddatav(i)%metadata%timerange%vol7d_timerange%p1 = 0
745 IF (
PRESENT(set_network))
THEN 746 if (
c_e(set_network))
then 763 do i =1,
size(metaanddatav)
764 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
765 if (
c_e(metaanddatav(i)%metadata%datetime%datetime))
then 767 call dativarl%append(metaanddatav(i)%dataattrv%dataattr(j)%dat%btable)
770 call anavarl%append(metaanddatav(i)%dataattrv%dataattr(j)%dat%btable)
776 ndativar = count_distinct(toarray_charl(dativarl) , back=.true.)
777 allocate(dativara(ndativar))
778 call pack_distinct_c (toarray_charl(dativarl) , dativara , back=.true.)
779 status = dativarl%delete()
780 allocate (vars%dcv(ndativar))
782 nanavar = count_distinct(toarray_charl(anavarl) , back=.true.)
783 allocate(anavara(nanavar))
784 call pack_distinct_c (toarray_charl(anavarl) , anavara , back=.true.)
785 status = anavarl%delete()
786 allocate (anavars%dcv(nanavar))
790 do i =1,
size(metaanddatav)
791 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
792 if (
c_e(metaanddatav(i)%metadata%datetime%datetime))
then 793 if (metaanddatav(i)%dataattrv%dataattr(j)%dat%btable == dativara(n))
then 794 allocate(vars%dcv(n)%dat,source=metaanddatav(i)%dataattrv%dataattr(j)%dat)
803 do i =1,
size(metaanddatav)
804 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
805 if (.not.
c_e(metaanddatav(i)%metadata%datetime%datetime))
then 806 if (metaanddatav(i)%dataattrv%dataattr(j)%dat%btable == anavara(n))
then 807 allocate(anavars%dcv(n)%dat,source=metaanddatav(i)%dataattrv%dataattr(j)%dat)
816 do i =1,
size(metaanddatav)
817 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
818 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
819 if (
c_e(metaanddatav(i)%metadata%datetime%datetime))
then 821 call dativarattrl%append(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat%btable)
824 call anavarattrl%append(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat%btable)
831 ndativarattr = count_distinct(toarray_charl(dativarattrl), back=.true.)
832 allocate(dativarattra(ndativarattr))
833 call pack_distinct_c (toarray_charl(dativarattrl), dativarattra, back=.true.)
834 status = dativarattrl%delete()
835 allocate(starvars%dcv(ndativarattr))
837 nanavarattr = count_distinct(toarray_charl(anavarattrl) , back=.true.)
838 allocate(anavarattra(nanavarattr))
839 call pack_distinct_c (toarray_charl(anavarattrl) , anavarattra , back=.true.)
840 status = anavarattrl%delete()
841 allocate(anastarvars%dcv(nanavarattr))
844 cn:
do n=1,ndativarattr
845 do i =1,
size(metaanddatav)
846 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
847 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
848 if (
c_e(metaanddatav(i)%metadata%datetime%datetime))
then 849 if (metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat%btable == dativarattra(n))
then 850 allocate(starvars%dcv(n)%dat,source=metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
860 dn:
do n=1,nanavarattr
861 do i =1,
size(metaanddatav)
862 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
863 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
864 if (.not.
c_e(metaanddatav(i)%metadata%datetime%datetime))
then 865 if (metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat%btable == anavarattra(n))
then 866 allocate(anastarvars%dcv(n)%dat,source=metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
887 allocate (tmpnetwork(
size(metaanddatav(:))),&
888 source=metaanddatav(:)%metadata%network%vol7d_network)
889 call sort(tmpnetwork)
890 nnetwork = count_distinct_sorted(tmpnetwork)
895 allocate (tmptime(
size(metaanddatav(:))),&
896 source=metaanddatav(:)%metadata%datetime%datetime)
898 ntime = count_distinct_sorted(tmptime,mask=
c_e(tmptime))
902 allocate (tmptimerange(
size(metaanddatav(:))),&
903 source=metaanddatav(:)%metadata%timerange%vol7d_timerange)
904 call sort(tmptimerange)
905 ntimerange = count_distinct_sorted(tmptimerange,mask=
c_e(tmptimerange))
909 allocate (tmplevel(
size(metaanddatav(:))),&
910 source=metaanddatav(:)%metadata%level%vol7d_level)
912 nlevel = count_distinct_sorted(tmplevel,mask=
c_e(tmplevel))
915 allocate (tmpana(
size(metaanddatav(:))),&
916 source=metaanddatav(:)%metadata%ana%vol7d_ana)
918 nana = count_distinct_sorted(tmpana)
938 do i =1 ,
size(vars%dcv)
939 associate(dato => vars%dcv(i)%dat)
942 ndativarr = ndativarr + 1
944 ndativari = ndativari + 1
946 ndativarb = ndativarb + 1
948 ndativard = ndativard + 1
950 ndativarc = ndativarc + 1
964 do i =1 ,
size(starvars%dcv)
965 associate(dato => starvars%dcv(i)%dat)
968 ndatiattrr = ndatiattrr + 1
970 ndatiattri = ndatiattri + 1
972 ndatiattrb = ndatiattrb + 1
974 ndatiattrd = ndatiattrd + 1
976 ndatiattrc = ndatiattrc + 1
990 do i =1 ,
size(anavars%dcv)
991 associate(dato => anavars%dcv(i)%dat)
994 nanavarr = nanavarr + 1
996 nanavari = nanavari + 1
998 nanavarb = nanavarb + 1
1000 nanavard = nanavard + 1
1002 nanavarc = nanavarc + 1
1016 do i =1 ,
size(anastarvars%dcv)
1017 associate(dato => anastarvars%dcv(i)%dat)
1020 nanaattrr = nanaattrr + 1
1022 nanaattri = nanaattri + 1
1024 nanaattrb = nanaattrb + 1
1026 nanaattrd = nanaattrd + 1
1028 nanaattrc = nanaattrc + 1
1042 if (ndatiattrr > 0 ) ndativarattrr=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1043 if (ndatiattri > 0 ) ndativarattri=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1044 if (ndatiattrb > 0 ) ndativarattrb=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1045 if (ndatiattrd > 0 ) ndativarattrd=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1046 if (ndatiattrc > 0 ) ndativarattrc=ndativarr+ndativari+ndativarb+ndativard+ndativarc
1055 if (nanaattrr > 0 ) nanavarattrr=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1056 if (nanaattri > 0 ) nanavarattri=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1057 if (nanaattrb > 0 ) nanavarattrb=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1058 if (nanaattrd > 0 ) nanavarattrd=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1059 if (nanaattrc > 0 ) nanavarattrc=nanavarr+nanavari+nanavarb+nanavard+nanavarc
1062 CALL init(this,time_definition=ltime_definition)
1077 call vol7d_alloc (this, &
1078 nana=nana, ntime=ntime, ntimerange=ntimerange, &
1079 nlevel=nlevel, nnetwork=nnetwork, &
1080 ndativarr=ndativarr, ndativari=ndativari, ndativarb=ndativarb, ndativard=ndativard, ndativarc=ndativarc,&
1081 ndatiattrr=ndatiattrr, ndatiattri=ndatiattri, ndatiattrb=ndatiattrb, ndatiattrd=ndatiattrd, ndatiattrc=ndatiattrc,&
1082 ndativarattrr=ndativarattrr, &
1083 ndativarattri=ndativarattri, &
1084 ndativarattrb=ndativarattrb, &
1085 ndativarattrd=ndativarattrd, &
1086 ndativarattrc=ndativarattrc,&
1087 nanavarr=nanavarr, nanavari=nanavari, nanavarb=nanavarb, nanavard=nanavard, nanavarc=nanavarc,&
1088 nanaattrr=nanaattrr, nanaattri=nanaattri, nanaattrb=nanaattrb, nanaattrd=nanaattrd, nanaattrc=nanaattrc,&
1089 nanavarattrr=nanavarattrr, &
1090 nanavarattri=nanavarattri, &
1091 nanavarattrb=nanavarattrb, &
1092 nanavarattrd=nanavarattrd, &
1093 nanavarattrc=nanavarattrc)
1100 this%ana=pack_distinct_sorted(tmpana, nana)
1108 this%time=pack_distinct_sorted(tmptime, ntime,mask=c_e(tmptime))
1116 this%timerange=pack_distinct_sorted(tmptimerange, ntimerange,mask=c_e(tmptimerange))
1117 deallocate(tmptimerange)
1124 this%level=pack_distinct_sorted(tmplevel, nlevel,mask=c_e(tmplevel))
1125 deallocate(tmplevel)
1130 ALLOCATE(this%network(1))
1131 this%network(1)=set_network
1135 this%network=pack_distinct_sorted(tmpnetwork, nnetwork)
1136 deallocate(tmpnetwork)
1148 do i =1 ,
size(vars%dcv)
1149 associate(dato => vars%dcv(i)%dat)
1152 ndativarr = ndativarr + 1
1153 call init (this%dativar%r(ndativarr), btable=dato%btable)
1155 ndativari = ndativari + 1
1156 call init (this%dativar%i(ndativari), btable=dato%btable)
1158 ndativarb = ndativarb + 1
1159 call init (this%dativar%b(ndativarb), btable=dato%btable)
1161 ndativard = ndativard + 1
1162 call init (this%dativar%d(ndativard), btable=dato%btable)
1164 ndativarc = ndativarc + 1
1165 call init (this%dativar%c(ndativarc), btable=dato%btable)
1179 do i =1 ,
size(starvars%dcv)
1180 associate(dato => starvars%dcv(i)%dat)
1183 ndatiattrr = ndatiattrr + 1
1184 call init (this%datiattr%r(ndatiattrr), btable=dato%btable)
1186 ndatiattri = ndatiattri + 1
1187 call init (this%datiattr%i(ndatiattri), btable=dato%btable)
1189 ndatiattrb = ndatiattrb + 1
1190 call init (this%datiattr%b(ndatiattrb), btable=dato%btable)
1192 ndatiattrd = ndatiattrd + 1
1193 call init (this%datiattr%d(ndatiattrd), btable=dato%btable)
1195 ndatiattrc = ndatiattrc + 1
1196 call init (this%datiattr%c(ndatiattrc), btable=dato%btable)
1210 do i =1 ,
size(anavars%dcv)
1211 associate(dato => anavars%dcv(i)%dat)
1214 nanavarr = nanavarr + 1
1215 call init (this%anavar%r(nanavarr), btable=dato%btable)
1217 nanavari = nanavari + 1
1218 call init (this%anavar%i(nanavari), btable=dato%btable)
1220 nanavarb = nanavarb + 1
1221 call init (this%anavar%b(nanavarb), btable=dato%btable)
1223 nanavard = nanavard + 1
1224 call init (this%anavar%d(nanavard), btable=dato%btable)
1226 nanavarc = nanavarc + 1
1227 call init (this%anavar%c(nanavarc), btable=dato%btable)
1241 do i =1 ,
size(anastarvars%dcv)
1242 associate(dato => anastarvars%dcv(i)%dat)
1245 nanaattrr = nanaattrr + 1
1246 call init (this%anaattr%r(nanaattrr), btable=dato%btable)
1248 nanaattri = nanaattri + 1
1249 call init (this%anaattr%i(nanaattri), btable=dato%btable)
1251 nanaattrb = nanaattrb + 1
1252 call init (this%anaattr%b(nanaattrb), btable=dato%btable)
1254 nanaattrd = nanaattrd + 1
1255 call init (this%anaattr%d(nanaattrd), btable=dato%btable)
1257 nanaattrc = nanaattrc + 1
1258 call init (this%anaattr%c(nanaattrc), btable=dato%btable)
1265 do i =1,
size(vars%dcv)
1266 associate(dato => vars%dcv(i)%dat)
1267 if ( ndativarattri > 0 )
call init(this%dativarattr%i(i),btable=dato%btable)
1268 if ( ndativarattrr > 0 )
call init(this%dativarattr%r(i),btable=dato%btable)
1269 if ( ndativarattrd > 0 )
call init(this%dativarattr%d(i),btable=dato%btable)
1270 if ( ndativarattrb > 0 )
call init(this%dativarattr%b(i),btable=dato%btable)
1271 if ( ndativarattrc > 0 )
call init(this%dativarattr%c(i),btable=dato%btable)
1275 do i =1,
size(anavars%dcv)
1276 associate(dato => anavars%dcv(i)%dat)
1277 if ( nanavarattri > 0 )
call init(this%anavarattr%i(i),btable=dato%btable)
1278 if ( nanavarattrr > 0 )
call init(this%anavarattr%r(i),btable=dato%btable)
1279 if ( nanavarattrd > 0 )
call init(this%anavarattr%d(i),btable=dato%btable)
1280 if ( nanavarattrb > 0 )
call init(this%anavarattr%b(i),btable=dato%btable)
1281 if ( nanavarattrc > 0 )
call init(this%anavarattr%c(i),btable=dato%btable)
1286 call vol7d_set_attr_ind(this)
1288 call vol7d_alloc_vol (this)
1297 do i =1,
size(metaanddatav)
1299 indana = index_sorted(this%ana, metaanddatav(i)%metadata%ana%vol7d_ana)
1304 indnetwork = index_sorted(this%network, metaanddatav(i)%metadata%network%vol7d_network)
1307 if (c_e(metaanddatav(i)%metadata%datetime%datetime) .and. &
1308 c_e(metaanddatav(i)%metadata%timerange%vol7d_timerange) .and. &
1309 c_e(metaanddatav(i)%metadata%level%vol7d_level) )
then 1311 indtime = index_sorted(this%time, metaanddatav(i)%metadata%datetime%datetime)
1312 indtimerange = index_sorted(this%timerange, metaanddatav(i)%metadata%timerange%vol7d_timerange)
1313 indlevel = index_sorted(this%level, metaanddatav(i)%metadata%level%vol7d_level)
1315 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
1317 associate(dato => metaanddatav(i)%dataattrv%dataattr(j)%dat)
1320 inddativar = firsttrue(dato%btable == this%dativar%i%btable)
1322 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1326 inddativar = firsttrue(dato%btable == this%dativar%r%btable)
1328 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1332 inddativar = firsttrue(dato%btable == this%dativar%d%btable)
1334 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1338 inddativar = firsttrue(dato%btable == this%dativar%b%btable)
1340 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1344 inddativar = firsttrue(dato%btable == this%dativar%c%btable)
1346 indana,indtime,indlevel,indtimerange,inddativar,indnetwork &
1353 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
1354 associate(attr => metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
1358 inddativarattr = firsttrue(dato%btable == this%dativarattr%i%btable)
1359 indattrvar = firsttrue(attr%btable == this%datiattr%i%btable)
1360 this%voldatiattri( &
1361 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1364 inddativarattr = firsttrue(dato%btable == this%dativarattr%r%btable)
1365 indattrvar = firsttrue(attr%btable == this%datiattr%r%btable)
1366 this%voldatiattrr( &
1367 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1370 inddativarattr = firsttrue(dato%btable == this%dativarattr%d%btable)
1371 indattrvar = firsttrue(attr%btable == this%datiattr%d%btable)
1372 this%voldatiattrd( &
1373 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1376 inddativarattr = firsttrue(dato%btable == this%dativarattr%b%btable)
1377 indattrvar = firsttrue(attr%btable == this%datiattr%b%btable)
1378 this%voldatiattrb( &
1379 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1382 inddativarattr = firsttrue(dato%btable == this%dativarattr%c%btable)
1383 indattrvar = firsttrue(attr%btable == this%datiattr%c%btable)
1384 this%voldatiattrc( &
1385 indana,indtime,indlevel,indtimerange,inddativarattr,indnetwork,indattrvar &
1396 do j=1,
size(metaanddatav(i)%dataattrv%dataattr)
1398 associate(dato => metaanddatav(i)%dataattrv%dataattr(j)%dat)
1401 indanavar = firsttrue(dato%btable == this%anavar%i%btable)
1403 indana,indanavar,indnetwork &
1407 indanavar = firsttrue(dato%btable == this%anavar%r%btable)
1409 indana,indanavar,indnetwork &
1413 indanavar = firsttrue(dato%btable == this%anavar%d%btable)
1415 indana,indanavar,indnetwork &
1419 indanavar = firsttrue(dato%btable == this%anavar%b%btable)
1421 indana,indanavar,indnetwork &
1425 indanavar = firsttrue(dato%btable == this%anavar%c%btable)
1427 indana,indanavar,indnetwork &
1434 do k=1,
size(metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv)
1435 associate(attr => metaanddatav(i)%dataattrv%dataattr(j)%attrv%dcv(k)%dat)
1439 indanavarattr = firsttrue(dato%btable == this%anavarattr%i%btable)
1440 indattrvar = firsttrue(attr%btable == this%anaattr%i%btable)
1442 indana,indanavarattr,indnetwork,indattrvar &
1445 indanavarattr = firsttrue(dato%btable == this%anavarattr%r%btable)
1446 indattrvar = firsttrue(attr%btable == this%anaattr%r%btable)
1448 indana,indanavarattr,indnetwork,indattrvar &
1451 indanavarattr = firsttrue(dato%btable == this%anavarattr%d%btable)
1452 indattrvar = firsttrue(attr%btable == this%anaattr%d%btable)
1454 indana,indanavarattr,indnetwork,indattrvar &
1457 indanavarattr = firsttrue(dato%btable == this%anavarattr%b%btable)
1458 indattrvar = firsttrue(attr%btable == this%anaattr%b%btable)
1460 indana,indanavarattr,indnetwork,indattrvar &
1463 indanavarattr = firsttrue(dato%btable == this%anavarattr%c%btable)
1464 indattrvar = firsttrue(attr%btable == this%anaattr%c%btable)
1466 indana,indanavarattr,indnetwork,indattrvar &
1521 end subroutine dba2v7d
1524 subroutine vol7d_dballe_import_dballevar(this)
1526 type(vol7d_var),
pointer :: this(:)
1529 IF (
associated(this))
return 1530 IF (
allocated(blocal))
then 1531 ALLOCATE(this(
size(blocal)))
1536 un = open_dballe_file(
'dballe.txt', filetype_data)
1539 call l4f_log(l4f_error,
"error open_dballe_file: dballe.txt")
1540 CALL raise_error(
"error open_dballe_file: dballe.txt")
1555 readline:
do i = 1 ,n
1556 READ(un,
'(1x,A6,1x,a65,a24,i4)')blocal(i)%btable,blocal(i)%description,blocal(i)%unit,&
1557 blocal(i)%scalefactor
1558 blocal(i)%btable(:1)=
"B" 1565 CALL l4f_log(l4f_info,
'Found '//trim(to_char(i-1))//
' variables in dballe master table')
1572 END SUBROUTINE vol7d_dballe_import_dballevar
1579 subroutine vol7d_dballe_set_var_du(this)
1583 type(vol7d_var),
pointer :: dballevar(:)
1586 call vol7d_dballe_import_dballevar(dballevar)
1588 #undef VOL7D_POLY_NAME 1589 #define VOL7D_POLY_NAME dativar 1592 #undef VOL7D_POLY_TYPES_V 1593 #define VOL7D_POLY_TYPES_V r 1594 #include "vol7d_dballe_class_var_du.F90" 1595 #undef VOL7D_POLY_TYPES_V 1596 #define VOL7D_POLY_TYPES_V i 1597 #include "vol7d_dballe_class_var_du.F90" 1598 #undef VOL7D_POLY_TYPES_V 1599 #define VOL7D_POLY_TYPES_V b 1600 #include "vol7d_dballe_class_var_du.F90" 1601 #undef VOL7D_POLY_TYPES_V 1602 #define VOL7D_POLY_TYPES_V d 1603 #include "vol7d_dballe_class_var_du.F90" 1604 #undef VOL7D_POLY_TYPES_V 1605 #define VOL7D_POLY_TYPES_V c 1606 #include "vol7d_dballe_class_var_du.F90" 1607 #undef VOL7D_POLY_TYPES_V 1609 #undef VOL7D_POLY_NAME 1610 #define VOL7D_POLY_NAME anavar 1613 #undef VOL7D_POLY_TYPES_V 1614 #define VOL7D_POLY_TYPES_V r 1615 #include "vol7d_dballe_class_var_du.F90" 1616 #undef VOL7D_POLY_TYPES_V 1617 #define VOL7D_POLY_TYPES_V i 1618 #include "vol7d_dballe_class_var_du.F90" 1619 #undef VOL7D_POLY_TYPES_V 1620 #define VOL7D_POLY_TYPES_V b 1621 #include "vol7d_dballe_class_var_du.F90" 1622 #undef VOL7D_POLY_TYPES_V 1623 #define VOL7D_POLY_TYPES_V d 1624 #include "vol7d_dballe_class_var_du.F90" 1625 #undef VOL7D_POLY_TYPES_V 1626 #define VOL7D_POLY_TYPES_V c 1627 #include "vol7d_dballe_class_var_du.F90" 1628 #undef VOL7D_POLY_TYPES_V 1631 #undef VOL7D_POLY_NAME 1632 #define VOL7D_POLY_NAME datiattr 1635 #undef VOL7D_POLY_TYPES_V 1636 #define VOL7D_POLY_TYPES_V r 1637 #include "vol7d_dballe_class_var_du.F90" 1638 #undef VOL7D_POLY_TYPES_V 1639 #define VOL7D_POLY_TYPES_V i 1640 #include "vol7d_dballe_class_var_du.F90" 1641 #undef VOL7D_POLY_TYPES_V 1642 #define VOL7D_POLY_TYPES_V b 1643 #include "vol7d_dballe_class_var_du.F90" 1644 #undef VOL7D_POLY_TYPES_V 1645 #define VOL7D_POLY_TYPES_V d 1646 #include "vol7d_dballe_class_var_du.F90" 1647 #undef VOL7D_POLY_TYPES_V 1648 #define VOL7D_POLY_TYPES_V c 1649 #include "vol7d_dballe_class_var_du.F90" 1650 #undef VOL7D_POLY_TYPES_V 1653 #undef VOL7D_POLY_NAME 1654 #define VOL7D_POLY_NAME anaattr 1657 #undef VOL7D_POLY_TYPES_V 1658 #define VOL7D_POLY_TYPES_V r 1659 #include "vol7d_dballe_class_var_du.F90" 1660 #undef VOL7D_POLY_TYPES_V 1661 #define VOL7D_POLY_TYPES_V i 1662 #include "vol7d_dballe_class_var_du.F90" 1663 #undef VOL7D_POLY_TYPES_V 1664 #define VOL7D_POLY_TYPES_V b 1665 #include "vol7d_dballe_class_var_du.F90" 1666 #undef VOL7D_POLY_TYPES_V 1667 #define VOL7D_POLY_TYPES_V d 1668 #include "vol7d_dballe_class_var_du.F90" 1669 #undef VOL7D_POLY_TYPES_V 1670 #define VOL7D_POLY_TYPES_V c 1671 #include "vol7d_dballe_class_var_du.F90" 1672 #undef VOL7D_POLY_TYPES_V 1675 deallocate(dballevar)
1679 end subroutine vol7d_dballe_set_var_du
1683 FUNCTION get_dballe_filepath(filename, filetype)
RESULT(path)
1684 CHARACTER(len=*),
INTENT(in) :: filename
1685 INTEGER,
INTENT(in) :: filetype
1688 CHARACTER(len=512) :: path
1691 IF (dballe_name ==
' ')
THEN 1692 CALL getarg(0, dballe_name)
1696 IF (filetype < 1 .OR. filetype > nftype)
THEN 1698 CALL l4f_log(l4f_error,
'dballe file type '//trim(to_char(filetype))// &
1705 CALL getenv(trim(dballe_name_env), path)
1706 IF (path /=
' ')
THEN 1708 path=trim(path)//
'/'//filename
1709 INQUIRE(file=path, exist=exist)
1711 CALL l4f_log(l4f_info,
'dballe file '//trim(path)//
' found')
1716 DO j = 1,
SIZE(pathlist,1)
1717 IF (pathlist(j,filetype) ==
' ')
EXIT 1718 path=trim(pathlist(j,filetype))//
'/'//trim(dballe_name)//
'/'//filename
1719 INQUIRE(file=path, exist=exist)
1721 CALL l4f_log(l4f_info,
'dballe file '//trim(path)//
' found')
1725 CALL l4f_log(l4f_error,
'dballe file '//trim(filename)//
' not found')
1729 END FUNCTION get_dballe_filepath
1732 FUNCTION open_dballe_file(filename, filetype)
RESULT(unit)
1733 CHARACTER(len=*),
INTENT(in) :: filename
1734 INTEGER,
INTENT(in) :: filetype
1737 CHARACTER(len=512) :: path
1740 path=get_dballe_filepath(filename, filetype)
1741 IF (path ==
'')
RETURN 1744 IF (unit == -1)
RETURN 1746 OPEN(unit, file=path, status=
'old', iostat = i)
1748 CALL l4f_log(l4f_info,
'dballe file '//trim(path)//
' opened')
1752 CALL l4f_log(l4f_error,
'dballe file '//trim(filename)//
' not found')
1756 END FUNCTION open_dballe_file
1770 SUBROUTINE vol7d_dballe_export_old(this, network, coordmin, coordmax,&
1771 timei, timef,level,timerange,var,attr,anavar,anaattr,ana,dataonly,anaonly,template,attr_only)
1774 character(len=network_name_len),
INTENT(in),
optional :: network
1777 TYPE(geo_coord),
INTENT(in),
optional :: coordmin,coordmax
1779 TYPE(datetime),
INTENT(in),
optional :: timei, timef
1780 TYPE(vol7d_level),
INTENT(in),
optional :: level
1781 TYPE(vol7d_timerange),
INTENT(in),
optional :: timerange
1784 CHARACTER(len=*),
INTENT(in),
OPTIONAL :: var(:),attr(:),anavar(:),anaattr(:)
1789 TYPE(vol7d_ana),
INTENT(inout),
optional :: ana
1790 logical,
intent(in),
optional :: dataonly
1791 logical,
intent(in),
optional :: anaonly
1794 character(len=*),
intent(in),
optional :: template
1795 logical,
intent(in),
optional :: attr_only
1798 type(dbadcv) :: vars,starvars,anavars,anastarvars
1799 type(dbafilter) :: filter
1800 type(dbacoord) :: mydbacoordmin, mydbacoordmax
1801 type(dbaana) :: mydbaana
1802 type(dbadatetime) :: mydatetimemin, mydatetimemax
1803 type(dbatimerange) :: mydbatimerange
1804 type(dbalevel) :: mydbalevel
1805 type(dbanetwork) :: mydbanetwork
1808 LOGICAL :: lattr, lanaattr
1809 integer :: nanaattr,nattr,nanavar,nvar
1818 if (
present(var))
then 1819 nvar=count(c_e(var))
1821 allocate (vars%dcv(nvar))
1823 if (c_e(var(i)))
then 1824 allocate (vars%dcv(i)%dat,source=dbadatac(var(i)))
1830 if (
present(anavar))
then 1831 nanavar=count(c_e(anavar))
1832 if (nanavar > 0)
then 1833 allocate (anavars%dcv(nanavar))
1835 if (c_e(anavar(i)))
then 1836 allocate (anavars%dcv(i)%dat,source=dbadatac(anavar(i)))
1843 if (
present(attr))
then 1844 nattr=count(c_e(attr))
1847 allocate (starvars%dcv(nattr))
1849 if (c_e(attr(i)))
then 1850 allocate (starvars%dcv(i)%dat,source=dbadatac(attr(i)))
1857 if (
present(anaattr))
then 1858 nanaattr=count(c_e(anaattr))
1859 if (nanaattr > 0)
then 1861 allocate (anastarvars%dcv(nanaattr))
1862 do i=1,
size(anaattr)
1863 if (c_e(anaattr(i)))
then 1864 allocate (anastarvars%dcv(i)%dat,source=dbadatac(anaattr(i)))
1872 mydbacoordmin=dbacoord()
1873 if (
present(coordmin)) mydbacoordmin%geo_coord=coordmin
1874 mydbacoordmax=dbacoord()
1875 if (
present(coordmax)) mydbacoordmax%geo_coord=coordmax
1877 if (
present(ana)) mydbaana%vol7d_ana=ana
1878 mydatetimemin=dbadatetime()
1879 if (
present(timei)) mydatetimemin%datetime=timei
1880 mydatetimemax=dbadatetime()
1881 if (
present(timef)) mydatetimemax%datetime=timef
1882 mydbatimerange=dbatimerange()
1883 if (
present(timerange)) mydbatimerange%vol7d_timerange=timerange
1884 mydbalevel=dbalevel()
1885 if (
present(level)) mydbalevel%vol7d_level=level
1886 mydbanetwork=dbanetwork()
1887 if (
present(network))
call init(mydbanetwork%vol7d_network,name=network)
1892 filter=dbafilter(coordmin=mydbacoordmin,coordmax=mydbacoordmax,ana=mydbaana, &
1893 datetimemin=mydatetimemin,datetimemax=mydatetimemax, &
1894 timerange=mydbatimerange,level=mydbalevel,network=mydbanetwork,&
1895 vars=vars,starvars=starvars,anavars=anavars,anastarvars=anastarvars,&
1896 dataonly=dataonly,anaonly=anaonly)
1901 call export (this, filter,template,attr_only)
1903 end SUBROUTINE vol7d_dballe_export_old
1906 subroutine vol7d_dballe_export (this, filter, template, attr_only)
1909 type(dbafilter),
intent(in) :: filter
1912 character(len=*),
intent(in),
optional :: template
1913 logical,
intent(in),
optional :: attr_only
1915 character(len=40) :: ltemplate
1917 type(dbametaanddatalist) :: metaanddatal
1920 metaanddatal=dbametaanddatalist()
1922 call v7d2dba(this%vol7d,metaanddatal)
1926 if (this%file)
call this%handle%remove_all()
1929 call metaanddatal%extrude(session=this%handle,filter=filter,attronly=attr_only,template=template)
1942 call filter%dbaset(this%handle)
1944 ltemplate=this%handle%template
1945 if (
present(template))
then 1949 call this%handle%messages_write_next(ltemplate)
1952 call this%handle%remove_all()
1956 stat = metaanddatal%delete()
1958 end subroutine vol7d_dballe_export
1961 subroutine v7d2dba(v7d,metaanddatal)
1962 TYPE(vol7d),
INTENT(in) :: v7d
1963 type(dbametaanddatalist),
intent(inout) :: metaanddatal
1965 TYPE(vol7d_serialize_dballe) :: serialize
1967 serialize = vol7d_serialize_dballe_new()
1968 serialize%anaonly=.true.
1969 call serialize%vol7d_serialize_setup(v7d)
1970 call serialize%vol7d_serialize_export(metaanddatal)
1972 serialize = vol7d_serialize_dballe_new()
1973 serialize%dataonly=.true.
1974 call serialize%vol7d_serialize_setup(v7d)
1975 call serialize%vol7d_serialize_export(metaanddatal)
1977 end subroutine v7d2dba
Oggetto per import ed export da DB-All.e.
classe per import ed export di volumi da e in DB-All.e
character version for dbadata
doubleprecision version for dbadata
class to manage links for lists in fortran 2003.
Test for a missing volume.
Classes for handling georeferenced sparse points in geographical corodinates.
filter to apply before ingest data
manage connection handle to a DSN
Classe per la gestione di un volume completo di dati osservati.
This module defines usefull general purpose function and subroutine.
class to use character lists in fortran 2003 WARNING !!!! CHAR LEN IS FIXED TO listcharmaxlen.
integer version for dbadata
class for import and export data from e to DB-All.e.
classe per la gestione del logging
Derived type defining an isolated georeferenced point on Earth in polar geographical coordinates...
Utilities for CHARACTER variables.
Emit log message for a category with specific priority.
fortran 2003 interface to geo_coord