libsim Versione 7.2.4
|
◆ vol7d_alloc()
Metodo per allocare i descrittori delle 7 dimensioni. Riceve un grande numero di parametri opzionali che indicano quali descrittori allocare e con quale estensione; i descrittori non specificati non vengono toccati. Può essere quindi chiamato più volte allocando via via descrittori relativi a dimensioni diverse. Se un descrittore richiesto è già allocato, viene deallocato (perdendone l'eventuale contenuto) e riallocato con l'estensione richiesta. Per i descrittori relativi a dimensioni che non siano variabili o attributi, è possibile specificare l'estensione di una dimensione a 0, in tal caso il descrittore viene comunque allocato con lunghezza nulla, che è diverso da non allocarlo. Per i descrittori di variabili e attributi passare un'estensione 0 equivale a non fornire il parametro. Avere uno o più descrittori dimensionati con estensione nulla fa sì che anche il volume dati successivamente allocato abbia estensione nulla; sebbene ciò appaia inutile, un volume del genere può in realtà servire, in associazione ai metodi vol7d_merge o vol7d_append per estendere un volume esistente aggiungendo elementi in alcune dimensioni (quelle a estensione non nulla, ovviamente) e mantenendo invariato tutto il resto. Per quanto riguarda i descrittori delle dimensioni relative alle variabili, la relativa estensione è specificata con la nomenclatura n<x><y><z> dove <x> può valere:
<y> può valere:
<z> può valere:
Definizione alla linea 1029 del file vol7d_class.F90. 1037IF (ASSOCIATED(this%anavar%r) .OR. ASSOCIATED(this%anavar%d) .OR. &
1038 ASSOCIATED(this%anavar%i) .OR. ASSOCIATED(this%anavar%b) .OR. &
1039 ASSOCIATED(this%anavar%c)) THEN
1040 vol7d_check_vol = vol7d_check_vol .AND. vol7d_check_alloc_ana(this)
1041ENDIF
1042
1043! Attributi dell'anagrafica
1044IF (ASSOCIATED(this%anaattr%r) .AND. ASSOCIATED(this%anavarattr%r) .AND. &
1045 .NOT.ASSOCIATED(this%volanaattrr)) THEN
1046 vol7d_check_vol = .false.
1047ENDIF
1048
1049IF (ASSOCIATED(this%anaattr%d) .AND. ASSOCIATED(this%anavarattr%d) .AND. &
1050 .NOT.ASSOCIATED(this%volanaattrd)) THEN
1051 vol7d_check_vol = .false.
1052ENDIF
1053
1054IF (ASSOCIATED(this%anaattr%i) .AND. ASSOCIATED(this%anavarattr%i) .AND. &
1055 .NOT.ASSOCIATED(this%volanaattri)) THEN
1056 vol7d_check_vol = .false.
1057ENDIF
1058
1059IF (ASSOCIATED(this%anaattr%b) .AND. ASSOCIATED(this%anavarattr%b) .AND. &
1060 .NOT.ASSOCIATED(this%volanaattrb)) THEN
1061 vol7d_check_vol = .false.
1062ENDIF
1063
1064IF (ASSOCIATED(this%anaattr%c) .AND. ASSOCIATED(this%anavarattr%c) .AND. &
1065 .NOT.ASSOCIATED(this%volanaattrc)) THEN
1066 vol7d_check_vol = .false.
1067ENDIF
1068
1069! Dati
1070IF (ASSOCIATED(this%dativar%r) .AND. .NOT.ASSOCIATED(this%voldatir)) THEN
1071 vol7d_check_vol = .false.
1072ENDIF
1073
1074IF (ASSOCIATED(this%dativar%d) .AND. .NOT.ASSOCIATED(this%voldatid)) THEN
1075 vol7d_check_vol = .false.
1076ENDIF
1077
1078IF (ASSOCIATED(this%dativar%i) .AND. .NOT.ASSOCIATED(this%voldatii)) THEN
1079 vol7d_check_vol = .false.
1080ENDIF
1081
1082IF (ASSOCIATED(this%dativar%b) .AND. .NOT.ASSOCIATED(this%voldatib)) THEN
1083 vol7d_check_vol = .false.
1084ENDIF
1085
1086IF (ASSOCIATED(this%dativar%c) .AND. .NOT.ASSOCIATED(this%voldatic)) THEN
1087 vol7d_check_vol = .false.
1088ENDIF
1089
1090! Attributi dei dati
1091IF (ASSOCIATED(this%datiattr%r) .AND. ASSOCIATED(this%dativarattr%r) .AND. &
1092 .NOT.ASSOCIATED(this%voldatiattrr)) THEN
1093 vol7d_check_vol = .false.
1094ENDIF
1095
1096IF (ASSOCIATED(this%datiattr%d) .AND. ASSOCIATED(this%dativarattr%d) .AND. &
1097 .NOT.ASSOCIATED(this%voldatiattrd)) THEN
1098 vol7d_check_vol = .false.
1099ENDIF
1100
1101IF (ASSOCIATED(this%datiattr%i) .AND. ASSOCIATED(this%dativarattr%i) .AND. &
1102 .NOT.ASSOCIATED(this%voldatiattri)) THEN
1103 vol7d_check_vol = .false.
1104ENDIF
1105
1106IF (ASSOCIATED(this%datiattr%b) .AND. ASSOCIATED(this%dativarattr%b) .AND. &
1107 .NOT.ASSOCIATED(this%voldatiattrb)) THEN
1108 vol7d_check_vol = .false.
1109ENDIF
1110
1111IF (ASSOCIATED(this%datiattr%c) .AND. ASSOCIATED(this%dativarattr%c) .AND. &
1112 .NOT.ASSOCIATED(this%voldatiattrc)) THEN
1113 vol7d_check_vol = .false.
1114ENDIF
1115IF (ASSOCIATED(this%dativar%r) .OR. ASSOCIATED(this%dativar%d) .OR. &
1116 ASSOCIATED(this%dativar%i) .OR. ASSOCIATED(this%dativar%b) .OR. &
1117 ASSOCIATED(this%dativar%c)) THEN
1118 vol7d_check_vol = vol7d_check_vol .AND. vol7d_check_alloc_dati(this)
1119ENDIF
1120
1121END FUNCTION vol7d_check_vol
1122
1123
|