Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / uts8ch.F
1       subroutine uts8ch ( tabch8, 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 - transfere un tableau de String*8 dans une CHaine
24 c   --                                   -      -          --
25 c   Remarque : on transfere stricto sensu le nombre de caracteres
26 c              demandes, sans se preoccuper de savoir s'il y a des
27 c              blancs ou des "mauvais" caracteres.
28 c   Remarque : si la chaine est declaree plus grande que le nombre de
29 c              caracteres a transferer, on complete a droite par des
30 c              blancs.
31 c   Exemple :
32 c                           12345678
33 c           : tabch8 (1) = 'Sous le '
34 c             tabch8 (2) = 'pont Mir'
35 c             tabch8 (3) = 'abeau co'
36 c             tabch8 (4) = 'ule la S'
37 c             tabch8 (5) = 'eine    '
38 c
39 c   lgchac = 43
40 c   chacar = 'Sous le pont Mirabeau coule la Seine       '
41 c             1234567890123456789012345678901234567890123
42 c ______________________________________________________________________
43 c .        .     .        .                                            .
44 c .  nom   . e/s . taille .           description                      .
45 c .____________________________________________________________________.
46 c . tabch8 . e   .   *    . tableau a transferer                       .
47 c . lgchac . e   .    1   . nombre de caracteres a transferer          .
48 c . chacar .   s .char*(*). chaine de caractere                        .
49 c . ulsort . e   .   1    . unite logique de la sortie generale        .
50 c . langue . e   .    1   . langue des messages                        .
51 c .        .     .        . 1 : francais, 2 : anglais                  .
52 c . codret .  s  .    1   . code de retour des modules                 .
53 c .        .     .        . 0 : pas de probleme                        .
54 c .        .     .        . 1 : chaine trop courte                     .
55 c ______________________________________________________________________
56 c
57 c====
58 c 0. declarations et dimensionnement
59 c====
60 c
61 c 0.1. ==> generalites
62 c
63       implicit none
64       save
65 c
66       character*6 nompro
67       parameter ( nompro = 'UTS8CH' )
68 c
69 #include "nblang.h"
70 c
71 c 0.2. ==> communs
72 c
73 #include "envex1.h"
74 c
75 c 0.3. ==> arguments
76 c
77       integer lgchac
78 c
79       character*8 tabch8(*)
80       character*(*) chacar
81 c
82       integer ulsort, langue, codret
83 c
84       integer nbmess
85       parameter (nbmess = 10 )
86       character*80 texte(nblang,nbmess)
87 c
88 c 0.4. ==> variables locales
89 c
90       integer iaux, jaux
91       integer lencha, nbchar, nbpack
92 c
93 c 0.5. ==> initialisations
94 c ______________________________________________________________________
95 c
96 c====
97 c 1. messages
98 c====
99 c
100 #include "impr01.h"
101 c
102 #ifdef _DEBUG_HOMARD_
103       write (ulsort,texte(langue,1)) 'Entree', nompro
104       call dmflsh (iaux)
105 #endif
106 c
107       texte(1,4) = '(''La chaine est declaree en char*'',i4)'
108       texte(1,5) = '(''mais on veut transferer '',i4,'' caracteres !'')'
109 c
110       texte(2,4) = '(''The string is declared as char*'',i4)'
111       texte(2,5) = '(''but, '',i4,'' characters must be moved !'')'
112 c
113 c====
114 c 2. verification de la longueur
115 c====
116 c
117       codret = 0
118 c
119       lencha = len(chacar)
120       if ( lgchac.gt.lencha ) then
121         codret = 1
122       endif
123 c
124 c====
125 c 3. transfert
126 c====
127 c
128       if ( codret.eq.0 ) then
129 c
130       nbchar = mod(lgchac,8)
131       nbpack = ( lgchac - nbchar ) / 8
132 c
133       jaux = 1
134       do 31 , iaux = 1 , nbpack
135         chacar(jaux:jaux+7)  = tabch8(iaux)
136         jaux = jaux + 8
137    31 continue
138 c
139       if ( nbchar.gt.0 ) then
140         chacar(jaux:jaux+nbchar-1) = tabch8(nbpack+1)(1:nbchar)
141       endif
142 c
143       jaux = jaux+nbchar
144       do 32 , iaux = jaux , lencha
145         chacar(iaux:iaux) = ' '
146    32 continue
147 c
148       endif
149 c
150 c====
151 c 3. la fin
152 c====
153 c
154       if ( codret.ne.0 ) then
155 c
156 #include "envex2.h"
157       write (ulsort,texte(langue,1)) 'Sortie', nompro
158         write (ulsort,texte(langue,2)) codret
159         write (ulsort,texte(langue,4)) lencha
160         write (ulsort,texte(langue,5)) lgchac
161       endif
162 c
163 #ifdef _DEBUG_HOMARD_
164       write (ulsort,texte(langue,1)) 'Sortie', nompro
165       call dmflsh (iaux)
166 #endif
167 c
168       end