Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utfmlg.F
1       subroutine utfmlg ( nbfmed, ngrouc,
2      >                    grfmpo, grfmtl, grfmtb,
3      >                    nbgrfm, nomgro, lgnogr,
4      >                    ulsort, langue, codret )
5 c ______________________________________________________________________
6 c
7 c                             H O M A R D
8 c
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c
17 c    HOMARD est une marque deposee d'Electricite de France
18 c
19 c Copyright EDF 1996
20 c Copyright EDF 1998
21 c Copyright EDF 2002
22 c Copyright EDF 2020
23 c ______________________________________________________________________
24 c
25 c     UTilitaire : Famille MED : Liste des Groupes
26 c     --           -       -     -         -
27 c ______________________________________________________________________
28 c .        .     .        .                                            .
29 c .  nom   . e/s . taille .           description                      .
30 c .____________________________________________________________________.
31 c . nbfmed .  e  .    1   . nombre de familles MED                     .
32 c . ngrouc .  e  .    1   . nombre cumule de groupes dans les familles .
33 c . grfmpo . e   .0:nbfmed. pointeur des groupes des familles          .
34 c . grfmtl . e   .   *    . taille des groupes des familles            .
35 c . grfmtb . e   .10nbgroc. table des groupes des familles             .
36 c . nbgrfm .   s .    1   . nombre de groupes                          .
37 c . nomgro .   s .char*(*). noms des groupes (paquets de 10char8)      .
38 c . lgnogr .   s .    *   . longueur des noms des groupes              .
39 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
40 c . langue . e   .    1   . langue des messages                        .
41 c .        .     .        . 1 : francais, 2 : anglais                  .
42 c . codret . es  .    1   . code de retour des modules                 .
43 c .        .     .        . 0 : pas de probleme                        .
44 c ______________________________________________________________________
45 c
46 c====
47 c 0. declarations et dimensionnement
48 c====
49 c
50 c 0.1. ==> generalites
51 c
52       implicit none
53       save
54 c
55       character*6 nompro
56       parameter ( nompro = 'UTFMLG' )
57 c
58 #include "nblang.h"
59 c
60 c 0.2. ==> communs
61 c
62 #include "envex1.h"
63 c
64 c 0.3. ==> arguments
65 c
66       integer nbfmed, ngrouc
67       integer grfmpo(0:nbfmed)
68       integer grfmtl(*)
69       integer nbgrfm, lgnogr(ngrouc)
70 c
71       character*8 grfmtb(*)
72       character*8 nomgro(*)
73 c
74       integer ulsort, langue, codret
75 c
76 c 0.4. ==> variables locales
77 c
78       integer iaux, jaux, kaux
79       integer nfam, ngro, nbgrou
80       integer lnogrf
81 c
82       character*80 nomgrf, nomgrl
83 c
84       integer nbmess
85       parameter ( nbmess = 10 )
86       character*80 texte(nblang,nbmess)
87 c
88 c 0.5. ==> initialisations
89 c ______________________________________________________________________
90 c
91 c====
92 c 1. messages
93 c====
94 c
95 #include "impr01.h"
96 c
97 #ifdef _DEBUG_HOMARD_
98       write (ulsort,texte(langue,1)) 'Entree', nompro
99       call dmflsh (iaux)
100 #endif
101 c
102 #include "impr03.h"
103 c
104       codret = 0
105 c
106 c====
107 c 2. Explorations de toutes les familles, s'il y a des groupes
108 c====
109 c
110       nbgrfm = 0
111 c
112       if ( ngrouc.gt.0 ) then
113 c
114       do 21 , nfam = 1 , nbfmed
115 c
116         if ( codret.eq.0 ) then
117 c
118         nbgrou = ( grfmpo(nfam) - grfmpo(nfam-1) ) / 10
119 c
120 #ifdef _DEBUG_HOMARD_
121       write(ulsort,90002) 'nfam', nfam
122       write(ulsort,90002) 'nbgrou', nbgrou
123 #endif
124 c
125 c 2.1. ==> Explorations de tous les groupes associes a la famille
126 c
127         do 211 , ngro = 1 , nbgrou
128 c
129 c 2.1.1. ==> Longueur du nom
130 c
131           iaux = grfmpo(nfam-1) + 1 + 10*(ngro-1)
132           lnogrf = 0
133           do 2111 , jaux = 1 , 10
134             lnogrf = lnogrf + grfmtl(iaux+jaux-1)
135  2111     continue
136 c
137 #ifdef _DEBUG_HOMARD_
138       write(ulsort,90002) 'ngro / lnogrf', ngro, lnogrf
139 #endif
140 c
141 c 2.1.2. ==> Le nom
142 c
143           call uts8ch ( grfmtb(iaux), lnogrf, nomgrf,
144      >                  ulsort, langue, codret )
145 cgn          write(ulsort,90003) 'Groupe ', nomgrf(1:lnogrf)
146 c
147 c 2.1.3. ==> Le nom est-il deja enregistre ?
148 c
149           do 2113 , jaux = 1 , nbgrfm
150             if ( lnogrf.eq.lgnogr(jaux) ) then
151               kaux = 10*(jaux-1) + 1
152               call uts8ch ( nomgro(kaux), lnogrf, nomgrl,
153      >                      ulsort, langue, codret )
154 cgn          write(ulsort,90003) '. Groupe ', nomgrl(1:lnogrf)
155               if ( nomgrf(1:lnogrf).eq.nomgrl(1:lnogrf) ) then
156                 goto 219
157               endif
158             endif
159  2113     continue
160 c
161 c 2.1.4. ==> Enregistrement d'un nouveau nom
162 c
163           nbgrfm = nbgrfm + 1
164           lgnogr(nbgrfm) = lnogrf
165           kaux = 10*(nbgrfm-1) + 1
166           call utchs8 ( nomgrf, 80, nomgro(kaux),
167      >                  ulsort, langue, codret )
168 c
169   219   continue
170 c
171   211   continue
172 c
173         endif
174 c
175    21 continue
176 c
177       endif
178 c
179 #ifdef _DEBUG_HOMARD_
180       write(ulsort,90002) 'nbgrfm', nbgrfm
181 #endif
182 c
183 c====
184 c 3. la fin
185 c====
186 c
187       if ( codret.ne.0 ) then
188 c
189 #include "envex2.h"
190 c
191       write (ulsort,texte(langue,1)) 'Sortie', nompro
192       write (ulsort,texte(langue,2)) codret
193 c
194       endif
195 c
196 #ifdef _DEBUG_HOMARD_
197       write (ulsort,texte(langue,1)) 'Sortie', nompro
198       call dmflsh (iaux)
199 #endif
200 c
201       end