SURFEX v8.1
General documentation of Surfex
factum.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe FA
3 SUBROUTINE factum_fort &
4 & (fa, cdnomc )
5 USE fa_mod, ONLY : fa_com, jpniil
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Sous-programme servant a supprimer un cadre.
12 ! ( Cadre a TUer Methodiquement ? )
13 !**
14 ! Argument : CDNOMC (Entree) ==> Nom symbolique du cadre.
15 !
16 !
17 !
18 TYPE(fa_com) :: FA
19 INTEGER (KIND=JPLIKB) ILCDNO, IREP, IRANGC, ILNOMC
20 INTEGER (KIND=JPLIKB) INIMES, INUMER, J
21 !
22 LOGICAL LLVERG
23 !
24 CHARACTER CDNOMC*(*)
25 !
26 !
27 !
28 CHARACTER(LEN=FA%JPXNOM) CLACTI
29 CHARACTER(LEN=FA%JPLMES) CLMESS
30 CHARACTER(LEN=FA%JPLSPX) CLNSPR
31 LOGICAL LLFATA
32 
33 !**
34 ! 1. - INITIALISATIONS ET CONTROLES SOMMAIRES.
35 !-----------------------------------------------------------------------
36 !
37 REAL(KIND=JPRB) :: ZHOOK_HANDLE
38 IF (lhook) CALL dr_hook('FACTUM_MT',0,zhook_handle)
39 clacti=''
40 IF (fa%FACTUM_LLPREA) THEN
41 !
42 ! Initialisation eventuelle des variables globales du logiciel.
43 !
44  CALL farine_fort &
45 & (fa, 2_jplikb )
46  fa%FACTUM_LLPREA=.false.
47 ENDIF
48 !
49 llverg=.false.
50 ilcdno=int(len(cdnomc), jplikb)
51 !
52 IF (ilcdno.LE.0) THEN
53  irep=-65
54  GOTO 1001
55 ELSEIF (cdnomc.EQ.' ') THEN
56  irep=-68
57  GOTO 1001
58 ENDIF
59 !
60 DO j=ilcdno,1,-1
61 !
62 IF (cdnomc(j:j).NE.' ') THEN
63  ilnomc=j
64  GOTO 102
65 ENDIF
66 !
67 ENDDO
68 !
69 102 CONTINUE
70 !
71 IF (ilnomc.GT.fa%NCPCAD) THEN
72  irep=-65
73  GOTO 1001
74 ENDIF
75 ! Verrouillage global, si necessaire.
76 !
77 IF (fa%LFAMUL) CALL lfiver_fort &
78 & (fa%LFI, fa%VRGLAS,'ON')
79 llverg=fa%LFAMUL
80 !
81 ! Controle d'existence du cadre specifie.
82 !
83 CALL fanuca_fort &
84 & (fa, cdnomc,irangc,.false.)
85 !
86 IF (irangc.EQ.0) THEN
87  irep=-51
88  GOTO 1001
89 ENDIF
90 !**
91 ! 2. - SUPPRESSION PROPREMENT DITE VIA LE SOUS-PROGRAMME "FACTUI".
92 !-----------------------------------------------------------------------
93 !
94 CALL factui_fort &
95 & (fa, irep,irangc)
96 !**
97 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
98 ! VIA LE sous-programme "FAIPAR" .
99 !-----------------------------------------------------------------------
100 !
101 1001 CONTINUE
102 !
103 ! Deverrouillage global eventuel.
104 !
105 IF (llverg) CALL lfiver_fort &
106 & (fa%LFI, fa%VRGLAS,'OFF')
107 !
108 llfata=llmoer(irep,0_jplikb )
109 !
110 IF (.NOT.llfata.OR.fa%NIMSGA.NE.2) THEN
111  IF (lhook) CALL dr_hook('FACTUM_MT',1,zhook_handle)
112  RETURN
113 ENDIF
114 !
115 inimes=2
116 clnspr='FACTUM'
117 !
118 IF (irep.EQ.-65.AND.ilcdno.LE.0) THEN
119  ilnomc=8
120  clacti(1:ilnomc)=fa%CHAINC(:ilnomc)
121 ELSE
122  ilnomc=min(int(len(clacti), jplikb),ilnomc)
123  clacti=cdnomc(1:ilnomc)
124 ENDIF
125 !
126 WRITE (unit=clmess,fmt='(''CDNOMC='''''',A,'''''''')') &
127 & clacti(1:ilnomc)
128 inumer=jpniil
129 CALL faipar_fort &
130 & (fa, inumer,inimes,irep,llfata,clmess, &
131 & clnspr, clacti(1:ilnomc),.false.)
132 !
133 IF (lhook) CALL dr_hook('FACTUM_MT',1,zhook_handle)
134 
135 CONTAINS
136 
137 #include "facom2.llmoer.h"
138 
139 END SUBROUTINE factum_fort
140 
141 
142 
143 ! Oct-2012 P. Marguinaud 64b LFI
144 SUBROUTINE factum64 &
145 & (cdnomc)
146 USE fa_mod, ONLY : fa => fa_com_default, &
149 USE lfi_precision
150 IMPLICIT NONE
151 ! Arguments
152 CHARACTER (LEN=*) CDNOMC ! IN
153 
154 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
155 
156 CALL factum_fort &
157 & (fa, cdnomc)
158 
159 END SUBROUTINE factum64
160 
161 SUBROUTINE factum &
162 & (cdnomc)
163 USE fa_mod, ONLY : fa => fa_com_default, &
166 USE lfi_precision
167 IMPLICIT NONE
168 ! Arguments
169 CHARACTER (LEN=*) CDNOMC ! IN
170 
171 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
172 
173 CALL factum_mt &
174 & (fa, cdnomc)
175 
176 END SUBROUTINE factum
177 
178 SUBROUTINE factum_mt &
179 & (fa, cdnomc)
180 USE fa_mod, ONLY : fa_com
181 USE lfi_precision
182 IMPLICIT NONE
183 ! Arguments
184 type(fa_com) fa ! INOUT
185 CHARACTER (LEN=*) CDNOMC ! IN
186 ! Local integers
187 ! Convert arguments
188 
189 
190 CALL factum_fort &
191 & (fa, cdnomc)
192 
193 
194 END SUBROUTINE factum_mt
195 
196 !INTF CDNOMC IN
subroutine factui_fort(FA, KREP, KRANGC)
Definition: factui.F90:5
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine fanuca_fort(FA, CDNOMC, KRANGC, LDVERR)
Definition: fanuca.F90:5
Definition: fa_mod.F90:1
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine farine_fort(FA, KOPTIO)
Definition: farine.F90:5
subroutine factum(CDNOMC)
Definition: factum.F90:163
logical lhook
Definition: yomhook.F90:15
subroutine factum_fort(FA, CDNOMC)
Definition: factum.F90:5
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine factum_mt(FA, CDNOMC)
Definition: factum.F90:180
subroutine factum64(CDNOMC)
Definition: factum.F90:146
integer(kind=jplikb), parameter jpniil
Definition: fa_mod.F90:31