1 subroutine gbdnoe (nome,objrep,objter,chater,codret)
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 decodage d'un nom etentu 'nome' pour determiner
23 c l'objet-repertoire,l'objet-terminal et le champ-terminal
25 c ...........................................................
28 c nome : character*(*) : nom etendu a decoder
30 c ...........................................................
33 c objrep : character*8 : objet repertoire
34 c objter : character*8 : objet terminal
35 c chater : character*8 : champ terminal
36 c codret : code de retour :
37 c -1 : erreur : nom etendu non valide
38 c 0 : OK : nom etendu n'a qu'un element :
42 c 1 : OK : objet-terminal non defini :
43 c aucun objet n'a ete attache au
44 c champ-terminal dans l'objet-repertoire ;
46 c 2 : OK : objet-terminal defini mais non alloue
47 c 3 : OK : objet-terminal defini et alloue
49 c ...........................................................
52 c 0. declarations et dimensionnement
55 c 0.1. ==> generalites
61 parameter ( nompro = 'GBDNOE' )
74 character*8 objrep,objter,chater
78 c 0.4. ==> variables locales
84 character*80 elem(nelx)
86 integer lelm(nelx),nelm,lgtot,ns
87 integer ipart,i,iel,codref,ityp,codrel
89 c 0.5. ==> initialisations
91 data sepa /'.' , ' ' , ' ' , ' '/
92 c ______________________________________________________________________
95 c 1. decomposition du nom-etendu
98 c 1.1. ==> recherche des differents champs du nom etendu
99 c seul le premier separateur, '.', est pris en compte
102 call gbpart(nome,elem,lelm,nelm,lgtot,sepa,ns,ipart)
104 if (ipart.eq.-1) then
109 c 1.2. ==> longueur des noms de chacun des champs <= 8
112 if (lelm(i).gt.8) then
118 c 1.3. ==> c'est une tete
122 objter = elem(1)(1:8)
129 c 1.4. ==> reperage des noms des differents champs
131 objrep = elem(1)(1:8)
133 call gbdnof(objrep,elem(iel),nomfis,codref)
135 if (codref.lt.0) then
141 c 1.5. ==> pour le dernier champ
143 chater = elem(nelm)(1:8)
144 call gbdnof(objrep,elem(iel),objter,codref)
146 if (codref.eq.-1) then
151 else if (codref.eq.0) then
153 call gbobal(objter,ityp,codrel)
154 #ifdef _DEBUG_HOMARD_
155 write (ulsort,*) 'apres gbobal ; codrel = ', codrel
157 if (codrel.ge.1) then
175 #ifdef _DEBUG_HOMARD_
176 if ( codret.eq.-1 ) then
177 write (ulsort,*) 'Probleme dans ', nompro, ' :'
178 write (ulsort,*) 'Ce nom etendu est invalide : ', nome