libsim Versione 7.2.6
|
◆ vol7d_display()
stampa a video una sintesi del contenuto
Definizione alla linea 685 del file vol7d_class.F90. 686
687print*,"<<<<<<<<<<<<<<<<<<< END vol7d object >>>>>>>>>>>>>>>>>>>>"
688
689END SUBROUTINE vol7d_display
690
691
692!> stampa a video una sintesi del contenuto
693SUBROUTINE dat_display(this,idat,rdat,ddat,bdat,cdat)
694TYPE(vol7d_var),intent(in) :: this !< oggetto da visualizzare
695!> real
696REAL :: rdat
697!> double precision
698DOUBLE PRECISION :: ddat
699!> integer
700INTEGER :: idat
701!> byte
702INTEGER(kind=int_b) :: bdat
703!> character
704CHARACTER(len=*) :: cdat
705
706print *, to_char_dat(this,idat,rdat,ddat,bdat,cdat)
707
708end SUBROUTINE dat_display
709
710!> stampa a video una sintesi del contenuto
711SUBROUTINE dat_vect_display(this,idat,rdat,ddat,bdat,cdat)
712
713TYPE(vol7d_var),intent(in) :: this(:) !< oggetto da visualizzare
714!> real
715REAL :: rdat(:)
716!> double precision
717DOUBLE PRECISION :: ddat(:)
718!> integer
719INTEGER :: idat(:)
720!> byte
721INTEGER(kind=int_b) :: bdat(:)
722!> character
723CHARACTER(len=*):: cdat(:)
724
725integer :: i
726
727do i =1,size(this)
728 call display(this(i),idat(i),rdat(i),ddat(i),bdat(i),cdat(i))
729end do
730
731end SUBROUTINE dat_vect_display
732
733
734FUNCTION to_char_dat(this,idat,rdat,ddat,bdat,cdat)
735#ifdef HAVE_DBALLE
736USE dballef
737#endif
738TYPE(vol7d_var),INTENT(in) :: this
739!> real
740REAL :: rdat
741!> double precision
742DOUBLE PRECISION :: ddat
743!> integer
744INTEGER :: idat
745!> byte
746INTEGER(kind=int_b) :: bdat
747!> character
748CHARACTER(len=*) :: cdat
749CHARACTER(len=80) :: to_char_dat
750
751CHARACTER(len=LEN(to_char_dat)) :: to_char_tmp
752
753
754#ifdef HAVE_DBALLE
755INTEGER :: handle, ier
756
757handle = 0
758to_char_dat="VALUE: "
759
760if (c_e(idat)) to_char_dat=trim(to_char_dat)//" ;int> "//trim(to_char(idat))
761if (c_e(rdat)) to_char_dat=trim(to_char_dat)//" ;real> "//trim(to_char(rdat))
762if (c_e(ddat)) to_char_dat=trim(to_char_dat)//" ;double> "//trim(to_char(ddat))
763if (c_e(bdat)) to_char_dat=trim(to_char_dat)//" ;byte> "//trim(to_char(bdat))
764
765if ( c_e(cdat))then
766 ier = idba_messaggi(handle,"/dev/null", "w", "BUFR")
767 ier = idba_spiegab(handle,this%btable,cdat,to_char_tmp)
768 ier = idba_fatto(handle)
769 to_char_dat=trim(to_char_dat)//" ;char> "//trim(to_char_tmp)
770endif
771
772#else
773
774to_char_dat="VALUE: "
775if (c_e(idat)) to_char_dat=trim(to_char_dat)//" ;int> "//trim(to_char(idat))
776if (c_e(rdat)) to_char_dat=trim(to_char_dat)//" ;real> "//trim(to_char(rdat))
777if (c_e(ddat)) to_char_dat=trim(to_char_dat)//" ;double> "//trim(to_char(ddat))
778if (c_e(bdat)) to_char_dat=trim(to_char_dat)//" ;byte> "//trim(to_char(bdat))
779if (c_e(cdat)) to_char_dat=trim(to_char_dat)//" ;char> "//trim(cdat)
780
781#endif
782
783END FUNCTION to_char_dat
784
785
786!> Tests whether anything has ever been assigned to a vol7d object
787!! (.TRUE.) or it is as clean as after an init (.FALSE.).
788FUNCTION vol7d_c_e(this) RESULT(c_e)
789TYPE(vol7d), INTENT(in) :: this
790
791LOGICAL :: c_e
792
793c_e = ASSOCIATED(this%ana) .OR. ASSOCIATED(this%time) .OR. &
794 ASSOCIATED(this%level) .OR. ASSOCIATED(this%timerange) .OR. &
795 ASSOCIATED(this%network) .OR. &
796 ASSOCIATED(this%anavar%r) .OR. ASSOCIATED(this%anavar%d) .OR. &
797 ASSOCIATED(this%anavar%i) .OR. ASSOCIATED(this%anavar%b) .OR. &
798 ASSOCIATED(this%anavar%c) .OR. &
799 ASSOCIATED(this%anaattr%r) .OR. ASSOCIATED(this%anaattr%d) .OR. &
800 ASSOCIATED(this%anaattr%i) .OR. ASSOCIATED(this%anaattr%b) .OR. &
801 ASSOCIATED(this%anaattr%c) .OR. &
802 ASSOCIATED(this%dativar%r) .OR. ASSOCIATED(this%dativar%d) .OR. &
803 ASSOCIATED(this%dativar%i) .OR. ASSOCIATED(this%dativar%b) .OR. &
804 ASSOCIATED(this%dativar%c) .OR. &
805 ASSOCIATED(this%datiattr%r) .OR. ASSOCIATED(this%datiattr%d) .OR. &
806 ASSOCIATED(this%datiattr%i) .OR. ASSOCIATED(this%datiattr%b) .OR. &
807 ASSOCIATED(this%datiattr%c)
808
809END FUNCTION vol7d_c_e
810
811
812!> Metodo per allocare i descrittori delle 7 dimensioni.
813!! Riceve un grande numero di parametri opzionali che
814!! indicano quali descrittori allocare e con quale estensione;
815!! i descrittori non specificati non vengono toccati.
816!! Può essere quindi chiamato più volte allocando via via
817!! descrittori relativi a dimensioni diverse.
818!! Se un descrittore richiesto è già allocato, viene deallocato
819!! (perdendone l'eventuale contenuto) e riallocato con l'estensione
820!! richiesta.
821!! Per i descrittori relativi a dimensioni che non siano variabili o attributi,
822!! è possibile specificare l'estensione di una dimensione a 0,
823!! in tal caso il descrittore viene comunque allocato con lunghezza nulla,
824!! che è diverso da non allocarlo. Per i descrittori di variabili e attributi
825!! passare un'estensione 0 equivale a non fornire il parametro.
826!! Avere uno o più descrittori dimensionati con estensione nulla fa sì
827!! che anche il volume dati successivamente allocato abbia estensione nulla;
828!! sebbene ciò appaia inutile, un volume del genere può in realtà servire,
829!! in associazione ai metodi ::vol7d_merge o ::vol7d_append per estendere
830!! un volume esistente aggiungendo elementi in alcune dimensioni (quelle
831!! a estensione non nulla, ovviamente) e mantenendo invariato tutto il resto.
832!! Per quanto riguarda i descrittori delle dimensioni relative alle
833!! variabili, la relativa estensione è specificata con la nomenclatura
834!! \a n<x><y><z> dove <x> può valere:
835!! - \a ana per variabili relative a voumi di anagrafica
836!! - \a dati per variabili relative a voumi di dati
837!!
838!! <y> può valere:
839!! - \a var per variabili
840!! - \a attr per attributi
841!! - \a varattr variabili aventi attributi nei volumi di attributi
842!!
843!! <z> può valere:
844!! - \a r per variabili o attributi a valori reali
845!! - \a d per variabili o attributi a valori a doppia precisione
846!! - \a i per variabili o attributi a valori interi
847!! - \a b per variabili o attributi a valori byte
848!! - \a c per variabili o attributi a valori carattere
849!!
850SUBROUTINE vol7d_alloc(this, nana, ntime, nlevel, ntimerange, nnetwork, &
851 nanavarr, nanavard, nanavari, nanavarb, nanavarc, &
852 nanaattrr, nanaattrd, nanaattri, nanaattrb, nanaattrc, &
853 nanavarattrr, nanavarattrd, nanavarattri, nanavarattrb, nanavarattrc, &
854 ndativarr, ndativard, ndativari, ndativarb, ndativarc, &
855 ndatiattrr, ndatiattrd, ndatiattri, ndatiattrb, ndatiattrc, &
856 ndativarattrr, ndativarattrd, ndativarattri, ndativarattrb, ndativarattrc, &
857 ini)
858TYPE(vol7d),INTENT(inout) :: this !< oggetto di cui allocare i descrittori
859INTEGER,INTENT(in),OPTIONAL :: nana !< estensione della dimensione anagrafica
860INTEGER,INTENT(in),OPTIONAL :: ntime !< estensione della dimensione tempo
861INTEGER,INTENT(in),OPTIONAL :: nlevel !< estensione della dimensione livello varticale
862INTEGER,INTENT(in),OPTIONAL :: ntimerange !< estensione della dimensione intervallo temporale (timerange)
863INTEGER,INTENT(in),OPTIONAL :: nnetwork !< estensione della dimensione rete
864!> estensione delle possibili dimensioni variabile
865INTEGER,INTENT(in),OPTIONAL :: &
866 nanavarr, nanavard, nanavari, nanavarb, nanavarc, &
867 nanaattrr, nanaattrd, nanaattri, nanaattrb, nanaattrc, &
868 nanavarattrr, nanavarattrd, nanavarattri, nanavarattrb, nanavarattrc, &
869 ndativarr, ndativard, ndativari, ndativarb, ndativarc, &
870 ndatiattrr, ndatiattrd, ndatiattri, ndatiattrb, ndatiattrc, &
871 ndativarattrr, ndativarattrd, ndativarattri, ndativarattrb, ndativarattrc
872LOGICAL,INTENT(in),OPTIONAL :: ini !< se fornito e vale \c .TRUE., viene chiamato il costruttore, senza parametri opzionali, per ogni elemento di tutti i descrittori allocati, inizializzandolo quindi a valore mancante
873
874INTEGER :: i
875LOGICAL :: linit
876
|