Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utrech.F
1       subroutine utrech ( reel, cadrag, lgchac, chacar,
2      >                    ulsort, langue, codret )
3 c ______________________________________________________________________
4 c
5 c                             H O M A R D
6 c
7 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
8 c
9 c Version originale enregistree le 18 juin 1996 sous le numero 96036
10 c aupres des huissiers de justice Simart et Lavoir a Clamart
11 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
12 c aupres des huissiers de justice
13 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
14 c
15 c    HOMARD est une marque deposee d'Electricite de France
16 c
17 c Copyright EDF 1996
18 c Copyright EDF 1998
19 c Copyright EDF 2002
20 c Copyright EDF 2020
21 c ______________________________________________________________________
22 c
23 c   UTilitaire - convertit un REel en CHaine de caractere
24 c   --                        --      --
25 c
26 c   Si la chaine fournie est plus longue que le nombre de chiffres a
27 c   ecrire, on complete par des blancs a droite ou a gauche, ou des 0
28 c   a gauche selon le type de cadrage demande.
29 c ______________________________________________________________________
30 c .        .     .        .                                            .
31 c .  nom   . e/s . taille .           description                      .
32 c .____________________________________________________________________.
33 c . reel   . e   .    1   . reel a convertir                           .
34 c . cadrag . e   . char*1 . type de cadrage d'entier ecrit             .
35 c .        .     .        . g/G : le nombre est cadre a gauche : '83  '.
36 c .        .     .        . d/D : le nombre est cadre a droite : '  83'.
37 c .        .     .        .       et on complete par des blancs        .
38 c . lgchac .   s .    1   . longueur de la chaine obtenue              .
39 c . chacar .   s .char*(*). chaine de caractere                        .
40 c . ulsort . e   .   1    . unite logique de la sortie generale        .
41 c . langue . e   .    1   . langue des messages                        .
42 c .        .     .        . 1 : francais, 2 : anglais                  .
43 c . codret .  s  .    1   . code de retour des modules                 .
44 c .        .     .        . 0 : pas de probleme                        .
45 c .        .     .        . 1 : chaine trop courte                     .
46 c .        .     .        . 2 : le nombre est trop grand               .
47 c .        .     .        . 3 : type de cadrage inconnu                .
48 c ______________________________________________________________________
49 c
50 c====
51 c 0. declarations et dimensionnement
52 c====
53 c
54 c 0.1. ==> generalites
55 c
56       implicit none
57       save
58 c
59       character*6 nompro
60       parameter ( nompro = 'UTENCH' )
61 c
62 #include "nblang.h"
63 c
64 c 0.2. ==> communs
65 c
66 #include "envex1.h"
67 c
68 c 0.3. ==> arguments
69 c
70       double precision reel
71 c
72       integer lgchac
73 c
74       character*1 cadrag
75       character*(*) chacar
76 c
77       integer ulsort, langue, codret
78 c
79       integer nbmess
80       parameter (nbmess = 10 )
81       character*80 texte(nblang,nbmess)
82 c
83 c 0.4. ==> variables locales
84 c
85       integer lgfmt
86       parameter ( lgfmt = 14 )
87 c
88       integer iaux, lgch00
89 c
90       logical cadgau
91 c
92       character*7 fmt
93 c
94 c 0.5. ==> initialisations
95 c ______________________________________________________________________
96 c
97 c====
98 c 1. messages
99 c====
100 c
101 #include "impr01.h"
102 c
103 #ifdef _DEBUG_HOMARD_
104       write (ulsort,texte(langue,1)) 'Entree', nompro
105       call dmflsh (iaux)
106 #endif
107 c
108       texte(1,10) = '(''Reel a convertir : '',g14.5)'
109       texte(1,4) = '(''La chaine est trop petite : longueur = '',i4)'
110       texte(1,5) = '(''Il faudrait au moins '',i4,'' places.'')'
111       texte(1,7) = '(''Le type de cadrage est mauvais : '',a1)'
112 c
113       texte(2,10) = '(''Real to convert : '',g14.5)'
114       texte(2,4) = '(''The string is too short : length = '',i4)'
115       texte(2,5) = '(''At less'',i4,'' places are needed.'')'
116       texte(2,7) = '(''Bad choice : '',a1)'
117 c
118 #ifdef _DEBUG_HOMARD_
119       write (ulsort,texte(langue,10)) reel
120 #endif
121 c
122 c====
123 c 2. decodage
124 c====
125 c
126       codret = 0
127 c
128 c 2.1. ==> type de cadrage
129 c
130       if ( cadrag.eq.'d' .or. cadrag.eq.'D' ) then
131         cadgau = .false.
132       elseif ( cadrag.eq.'g' .or. cadrag.eq.'G' ) then
133         cadgau = .true.
134       else
135         codret = 3
136       endif
137 c
138 c 2.2. ==> verification de la longueur
139 c
140       lgch00 = len(chacar)
141       if ( lgfmt.gt.lgch00 ) then
142         codret = 1
143       endif
144 c
145 c 2.3. ==> ecriture
146 c
147       if ( codret.eq.0 ) then
148 c
149       fmt = '(G  .5)'
150       write(fmt(3:4),'(i2)') lgfmt
151 c
152       do 23 , iaux = 1 , lgch00
153         chacar(iaux:iaux) = ' '
154    23 continue
155 c
156       if ( cadgau ) then
157         write (chacar(1:lgfmt),fmt) reel
158         lgchac = lgfmt
159       else
160         write (chacar(lgch00-lgfmt+1:lgch00),fmt) reel
161         lgchac = lgch00
162       endif
163 c
164       endif
165 c
166 c====
167 c 3. la fin
168 c====
169 c
170       if ( codret.ne.0 ) then
171 c
172 #include "envex2.h"
173       write (ulsort,texte(langue,1)) 'Sortie', nompro
174         write (ulsort,texte(langue,2)) codret
175         write (ulsort,texte(langue,10)) reel
176         if ( codret.eq.1 ) then
177           write (ulsort,texte(langue,4)) lgch00
178           write (ulsort,texte(langue,5)) lgfmt
179         elseif ( codret.eq.3 ) then
180           write (ulsort,texte(langue,7)) cadrag
181         endif
182 #ifdef _DEBUG_HOMARD_
183       write (ulsort,texte(langue,1)) 'Sortie', nompro
184       call dmflsh (iaux)
185 #endif
186 c
187       endif
188 c
189       end