1 subroutine ugfino ( motcle, nfichi, lfichi,
3 > ulsort, langue, codret )
4 c ______________________________________________________________________
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c Version originale enregistree le 18 juin 1996 sous le numero 96036
11 c aupres des huissiers de justice Simart et Lavoir a Clamart
12 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
13 c aupres des huissiers de justice
14 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c but : retourne le nom du fichier correspondant a un mot-cle
26 c en faisant la lecture directe dans le fichier de configuration
28 c note: on s'attend, dans le fichier de configuration, a trouver un
29 c nom de fichier nfichi "a la UNIX". Ce nom de fichier est
30 c converti par dmnfcv, a la fin de ce sous-programme,
31 c pour etre acceptable par le systeme
32 c d'exploitation courant (par exemple WINDOWS).
33 c ______________________________________________________________________
35 c . nom . e/s . taille . description .
36 c .____________________________________________________________________.
37 c . motcle . e . char8 . mot-cle de reperage dans la configuration .
38 c . nfichi . s . char * . nom du fichier associe .
39 c . lfichi . s . 1 . longueur de ce nom .
40 c . nfconf . e . char * . nom du fichier de configuration .
41 c . lfconf . e . 1 . longueur de ce nom .
42 c . ulsort . e . 1 . unite logique d'impression .
43 c . langue . e . 1 . langue des messages .
44 c . . . . 1 : francais, 2 : anglais .
45 c . codret . s . 1 . 0 : le nom du fichier est trouve .
46 c . . . . 1 : le mot-cle est absent du fichier .
47 c . . . . 2 : plusieurs noms existent .
48 c . . . . 3 : le mot-cle n'est associe a aucun fichie.
49 c . . . . 5 : le mot-cle est blanc .
50 c . . . . 7 : impossible de decoder une variable .
51 c . . . . d'environnement .
52 c ______________________________________________________________________
55 c 0. declarations et dimensionnement
58 c 0.1. ==> generalites
64 parameter ( nompro = 'UGFINO' )
73 integer lfconf, lfichi
74 integer langue, ulsort, codret
77 character*(*) nfconf, nfichi
79 c 0.4. ==> variables locales
81 integer ideb1, ideb2, ideb3, ideb4
82 integer ifin1, ifin2, ifin3, ifin4
83 integer ulconf, codre0, codre1, codre2
84 integer iaux, jaux, kaux
85 integer lgnova, lgnout
90 integer lgliga, lgligb
92 character*400 lignea, ligneb
93 character*400 nomvar, nomuti
101 parameter ( nbmess = 10 )
102 character*80 texte(nblang,nbmess)
104 c 0.5. ==> initialisations
106 parameter ( lgmax = 400 )
107 c ______________________________________________________________________
113 c 1.1. ==> les messages
117 #ifdef _DEBUG_HOMARD_
118 write (ulsort,texte(langue,1)) 'Entree', nompro
122 texte(1,4) = '(''Dans le fichier de configuration'')'
124 > '(''Aucun fichier n''''est associe au mot-cle :'')'
126 >'(''le mot-cle '',a8,'' est associe a plusieurs fichiers.'')'
127 texte(1,7) = '(''le mot-cle '',a8,'' est absent.'')'
129 texte(2,4) = '(''In the configuration file'')'
130 texte(2,5) = '(''No file is connected with the keyword :'')'
132 >'(''the keyword '',a8,'' is connected with several files.'')'
133 texte(2,7) = '(''the keyword '',a8,'' is missing.'')'
135 c 1.2. ==> les constantes
140 do 10 iaux = 1 , len(nfichi)
141 nfichi (iaux:iaux) = ' '
146 do 11 , iaux = 1 , lgmax
147 ligbla (iaux:iaux) = ' '
150 c 1.3. ==> initialisation pour ne plus avoir de messages ftnchek
154 c 1.4. ==> suppression des blancs aux extremites du mot-cle
156 jaux = min(8,len(motcle))+1
157 do 141 , iaux = 1 , min(8,len(motcle))
158 if ( motcle (iaux:iaux) .ne. ' ' ) then
167 do 143 , iaux = min(8,len(motcle)), jaux , -1
168 if ( motcle (iaux:iaux) .ne. ' ' ) then
176 lgmoc = kaux - jaux + 1
179 if ( lgmoc.gt.0 ) then
180 motloc(1:lgmoc) = motcle(jaux:kaux)
182 #ifdef _DEBUG_HOMARD_
183 write (ulsort,*) 'Mot_cle : ', motloc
190 c 2. decodage du fichier de configuration
193 if ( codret.eq.0 ) then
197 c 2.1. ==> ouverture du fichier de configuration
199 call guoufs ( nfconf, lfconf, ulconf, codre1 )
201 if ( codre1.ne.0 .and. ulconf.le.0 ) then
207 call gurbbu ( ulconf, codre0 )
209 c 2.2. ==> boucle sur les lignes
217 read ( ulconf, 20400, end=31, err=31 ) lignea
219 c 2.2.1. ==> on ne tient pas compte d'une ligne en commentaire
221 if ( lignea(1:1).eq.commen ) then
225 c 2.2.2. ==> nettoyage eventuel de la ligne lue (caract. non impr.):
227 call dmcpch( lignea, lgliga, ligneb, lgligb )
229 c 2.2.3. ==> on ne tient pas compte d'une ligne blanche
231 if ( lgligb.eq.0 ) then
235 c 2.2.4. ==> recherche du debut du mot-cle
237 iaux = index(ligneb,motloc(1:lgmoc))
239 c 2.2.5. ==> Le mot-cle est present
241 if ( iaux.gt.0 ) then
243 c 2.2.5.1. ==> recherche des positions des mots
245 #ifdef _DEBUG_HOMARD_
246 write (ulsort,texte(langue,3)) 'UGFIA3', nompro
248 call ugfia3 ( ligneb,
249 > ideb1, ifin1, ideb2, ifin2,
250 > ideb3, ifin3, ideb4, ifin4,
251 > ulsort, langue, codret )
253 c 2.2.5.7. ==> decodage.
254 c On controle que le mot-cle est le bon
255 c et place en premier
256 c Si oui, on determine le nom du fichier.
258 if ( lgmoc.ne.ifin1-ideb1+1 .or.
259 > motloc(1:lgmoc).ne.ligneb(ideb1:ifin1) ) then
263 if ( lfichi.ne.0 ) then
264 write (ulsort,texte(langue,1)) 'Sortie', nompro
265 write (ulsort,texte(langue,4))
266 write (ulsort,*) nfconf(1:lfconf)
267 write (ulsort,texte(langue,6)) motloc(1:lgmoc)
271 if ( ideb3.gt.0 ) then
280 if ( ifin4.gt.ideb4+1 .and.
281 > ligneb(ideb4:ideb4+1).eq.'./' ) then
290 do 271 , iaux = ideb4, ifin4
292 if ( ligneb(iaux:iaux).eq.'$' ) then
295 call dmvaen ( nomvar, lgnova, nomuti, lgnout,
296 > ulsort, langue, codre0 )
297 if ( codre0.ne.0 ) then
300 if ( kaux.lt.len(nfichi) .and. lgnout.gt.0 ) then
301 lgnout = min( len(nfichi)-kaux, lgnout )
302 nfichi(kaux+1:kaux+lgnout) = nomuti(1:lgnout)
309 elseif ( ligneb(iaux:iaux).eq.'.' .or.
310 > ligneb(iaux:iaux).eq.'-' .or.
311 > ligneb(iaux:iaux).eq.'/' ) then
313 call dmvaen ( nomvar, lgnova, nomuti, lgnout,
314 > ulsort, langue, codre0 )
315 if ( codre0.ne.0 ) then
318 if ( kaux.lt.len(nfichi) .and. lgnout.gt.0 ) then
319 lgnout = min( len(nfichi)-kaux, lgnout )
320 nfichi(kaux+1:kaux+lgnout) = nomuti(1:lgnout)
325 if ( kaux.lt.len(nfichi) ) then
327 nfichi(kaux:kaux) = ligneb(iaux:iaux)
333 nomvar(lgnova:lgnova) = ligneb(iaux:iaux)
334 if ( iaux.eq.ifin4 ) then
335 call dmvaen ( nomvar, lgnova, nomuti, lgnout,
336 > ulsort, langue, codre0 )
337 if ( codre0.ne.0 ) then
340 if ( kaux.lt.len(nfichi) .and. lgnout.gt.0 ) then
341 lgnout = min( len(nfichi)-kaux, lgnout )
342 nfichi(kaux+1:kaux+lgnout) = nomuti(1:lgnout)
347 if ( kaux.lt.len(nfichi) ) then
349 nfichi(kaux:kaux) = ligneb(iaux:iaux)
357 if ( codret.eq.1 ) then
364 c 2.2.6. ==> ligne suivante
372 if ( codre1.eq.0 ) then
373 call gufefi ( nfconf, lfconf, codre0 )
378 c conversion eventuelle du nom du fichier trouve dans le
379 c fichier de configuration: sous UNIX, dmnfcv ne fait RIEN ...
380 c sous WINDOWS, on change les / en \ ...
382 if ( lfichi.gt.0 ) then
383 call dmnfcv( nfichi, lfichi )
386 if ( codret.eq.0 ) then
387 if ( codre1.ne.0 ) then
392 if ( codret.eq.0 ) then
393 if ( codre2.ne.0 ) then
398 if ( codret.eq.0 ) then
399 if ( lfichi.le.0 ) then
410 #ifdef _DEBUG_HOMARD_
411 if ( codret.ne.0 ) then
413 write (ulsort,texte(langue,1)) 'Sortie', nompro
414 write (ulsort,texte(langue,2)) codret
415 write (ulsort,texte(langue,4))
416 if ( lfconf.gt.0 .and. len(nfconf).gt.0 ) then
417 write (ulsort,*) nfconf(1:min(lfconf,len(nfconf)))
421 write (ulsort,texte(langue,7)) motloc