1 subroutine gblboj ( nomter )
2 c ______________________________________________________________________
6 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
8 c Version originale enregistree le 18 juin 1996 sous le numero 96036
9 c aupres des huissiers de justice Simart et Lavoir a Clamart
10 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
11 c aupres des huissiers de justice
12 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
14 c HOMARD est une marque deposee d'Electricite de France
20 c ______________________________________________________________________
22 c liberation d'un objet 'nomter' structure ou simple
23 c et suppression de tous les attachements qui le concernent
24 c ______________________________________________________________________
26 c . nom . e/s . taille . description .
27 c .____________________________________________________________________.
28 c . nomter . e . char*8 . nom terminal de l'objet a liberer .
29 c ______________________________________________________________________
32 c 0. declarations et dimensionnement
35 c 0.1. ==> generalites
41 parameter ( nompro = 'GBLBOJ' )
62 c 0.4. ==> variables locales
64 integer iaux,ioc,ioa,nbc,nba
69 parameter ( nbmess = 10 )
70 character*80 texte(nblang,nbmess)
79 write (ulsort,texte(langue,1)) 'Entree', nompro
84 c 2. l'objet est-il alloue ?
85 c codre1 = 0 --> non alloue
86 c codre1 = 1 --> objet structure
87 c codre1 = 2 --> objet simple
90 call gbobal ( nomter , iaux , codre1 )
92 if ( codre1.eq.0 ) then
99 c 3. Si l'objet est simple, on le desalloue par le programme basique
102 if ( coergm.eq.0 ) then
104 if ( codre1.eq.2 ) then
113 c 4. Si l'objet est structure, on le recherche dans la liste
116 if ( coergm.eq.0 ) then
118 if ( codre1.eq.1 ) then
120 c 4.1. ==> on le recherche dans la liste
123 do 411 , iaux = 1,iptobj-1
124 if (nomobj(iaux).eq.nomter) then
134 c 4.2. ==> si c'est le dernier objet enregistre : on le supprime
135 c . on ramene aux valeurs indefinies toutes les informations
136 c qui concernent ses champs.
137 c . on memorise les nouvelles adresses des futurs
138 c champs et attributs
139 c . on ramene aux valeurs indefinies toutes les informations
142 if ( nroobj.eq.iptobj ) then
144 do 421 , ioc = adrdso(nroobj),iptchp-1
148 do 422 , ioa = adrdsa(nroobj),iptatt-1
152 iptchp = adrdso(nroobj)
153 iptatt = adrdsa(nroobj)
155 nomobj(nroobj) = sindef
156 adrdsa(nroobj) = iindef
157 adrdso(nroobj) = iindef
158 typobj(nroobj) = iindef
162 c 4.3. ==> si ce n'est pas le dernier objet enregistre :
163 c . on comprime la liste
165 c 4.3.1 ==> les noms des champs associes aux objets, puis mise
168 nbc = adrdso(nroobj+1)-adrdso(nroobj)
169 do 431 , ioc = adrdso(nroobj),iptchp-nbc-1
170 nomobc(ioc) = nomobc(ioc+nbc)
173 do 432 , ioc = iptchp-nbc,iptchp-1
178 c 4.3.2 ==> les attributs associes aux objets, puis mise
181 nba = adrdsa(nroobj+1)-adrdsa(nroobj)
182 do 433 , ioa = adrdsa(nroobj),iptatt-nba-1
183 valatt(ioa) = valatt(ioa+nba)
186 do 434 , ioa = iptatt-nba,iptatt-1
191 c 4.3.3. ==> les adresses dans les tableaux des champs et des attributs
193 do 435 , iaux = nroobj+1,iptobj-1
194 adrdso(iaux) = adrdso(iaux+1)-nbc
195 adrdsa(iaux) = adrdsa(iaux+1)-nba
197 adrdsa(iptobj) = iindef
198 adrdso(iptobj) = iindef
200 c 4.3.4. ==> les noms et types des objets alloues
202 do 436 , iaux = nroobj,iptobj-1
203 nomobj(iaux) = nomobj(iaux+1)
204 typobj(iaux) = typobj(iaux+1)
207 nomobj(iptobj) = sindef
208 typobj(iptobj) = iindef
220 if ( coergm.ne.0 ) then
222 write(ulsort,*) nompro, ', code retour ',coergm,' pour ',nomter