SURFEX v7.3
General documentation of Surfex
|
00001 C Jan-2011 P. Marguinaud Thread-safe LFI 00002 SUBROUTINE LFIECD_MT (LFI, KREP, KRANG, KTAB, KLONG, 00003 S KPOSEC, KRETIN ) 00004 USE LFIMOD, ONLY : LFICOM 00005 USE PARKIND1, ONLY : JPRB 00006 USE YOMHOOK , ONLY : LHOOK, DR_HOOK 00007 C**** 00008 C SOUS-PROGRAMME *INTERNE* DU LOGICIEL DE FICHIERS INDEXES LFI 00009 C ECRITURE DES DONNEES PROPREMENT DITES, UNE FOIS L'ARTICLE LOGIQUE 00010 C DEFINI (PAR NOM, OU PAR POSITION) . 00011 C** 00012 C ARGUMENTS : KREP (SORTIE) ==> CODE-REPONSE DU SOUS-PROGRAMME; 00013 C KRANG (ENTREE) ==> RANG ( DANS LA TABLE *LFI%NUMERO* ) 00014 C DE L'UNITE LOGIQUE CONCERNEE; 00015 C KTAB (ENTREE) ==> PREMIER MOT A ECRIRE; 00016 C KLONG (ENTREE) ==> LONGUEUR DE L'ARTICLE A ECRIRE; 00017 C KPOSEC (ENTREE) ==> POSITION ( DANS LE FICHIER ) OU 00018 C COMMENCER A ECRIRE L'ARTICLE; 00019 C KRETIN (SORTIE) ==> CODE-RETOUR INTERNE. 00020 C 00021 #ifndef f77 00022 #include "precision.h" 00023 #endif 00024 C 00025 TYPE(LFICOM) :: LFI 00026 INTEGER KREP, KRANG, KLONG, KPOSEC, KRETIN 00027 #ifndef f77 00028 INTEGER (KIND=JPDBLE) KTAB (KLONG), IFOURT (LFI%JPLARX) 00029 #else 00030 INTEGER KTAB (KLONG), IFOURT (LFI%JPLARX) 00031 #endif 00032 INTEGER INUCPL (LFI%JPNPDF), INAPHY, INUMER, ILARPH, 00033 S IPODEB, IPOFIN 00034 INTEGER IARDEB, IARFIN, IDCDEB, IDCFIN, ICPLTI, ICPLTF, ICPTTN 00035 INTEGER ICPTTX, INCPLT, INUMAP, J, JD, IDECDE, IPAREC, ITAMLI 00036 INTEGER INUMPJ, INUMPD, IARTIC, INPDRE, INPDTA, INPDIS, INDIK1 00037 INTEGER INDIK2, INDIC1, INDIC2, JI, IFACTM, IRETOU, INIMES 00038 INTEGER IRETIN 00039 C 00040 LOGICAL LLADON, LLDERN 00041 C 00042 #include "lficom2.h" 00043 #include "lficom_mt.h" 00044 C** 00045 C 1. - CONTROLES DES PARAMETRES D'APPEL, PUIS INITIALISATIONS. 00046 C----------------------------------------------------------------------- 00047 C 00048 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00049 IF (LHOOK) CALL DR_HOOK('LFIECD_MT',0,ZHOOK_HANDLE) 00050 IRETOU=0 00051 C 00052 IF (KRANG.LE.0.OR.KRANG.GT.LFI%JPNXFI.OR.KPOSEC.EQ.0) 00053 S THEN 00054 KREP=-16 00055 GOTO 1001 00056 ENDIF 00057 C 00058 INUMER=LFI%NUMERO(KRANG) 00059 IFACTM=LFI%MFACTM(KRANG) 00060 ILARPH=LFI%JPLARD*IFACTM 00061 KREP=0 00062 C** 00063 C 2. - PARTIE ECRITURE DES DONNEES . 00064 C----------------------------------------------------------------------- 00065 C* 00066 C 2.1 - UTILISATION DES ARTICLES PHYSIQUES PRESENTS EN MEMOIRE, 00067 C ET QUE L'ON S'APPRETE A ECRIRE *EN ENTIER*. 00068 C----------------------------------------------------------------------- 00069 C 00070 IPODEB=KPOSEC 00071 IPOFIN=KPOSEC+KLONG-1 00072 IARDEB=1+(IPODEB-1)/ILARPH 00073 IARFIN=1+(IPOFIN-1)/ILARPH 00074 IDCDEB=MOD (IPODEB-1,ILARPH) 00075 IDCFIN=MOD (IPOFIN ,ILARPH) 00076 LLDERN=IDCFIN.NE.0.AND.((IARFIN.NE.IARDEB) 00077 S .OR.(IARFIN.EQ.IARDEB.AND.IDCDEB.EQ.0)) 00078 ICPLTI=IARDEB+(IDCDEB+ILARPH-1)/ILARPH 00079 ICPLTF=IARFIN-1+(ILARPH-IDCFIN)/ILARPH 00080 ICPTTN=ICPLTF+1 00081 ICPTTX=ICPLTI-1 00082 INCPLT=0 00083 C 00084 IF (LFI%LMISOP) THEN 00085 WRITE (UNIT=LFI%NULOUT,FMT=*)'KPOSEC= ',KPOSEC,', IPODEB= ',IPODEB,', IPOFIN= ',IPOFIN 00086 WRITE (UNIT=LFI%NULOUT,FMT=*)'IARDEB= ',IARDEB,', IARFIN= ',IARFIN,', IDCDEB= ',IDCDEB 00087 WRITE (UNIT=LFI%NULOUT,FMT=*)'IDCFIN= ',IDCFIN,', ICPLTI= ',ICPLTI,', ICPLTF= ',ICPLTF 00088 WRITE (UNIT=LFI%NULOUT,FMT=*)'ICPTTN= ',ICPTTN,', ICPTTX= ',ICPTTX 00089 ENDIF 00090 C 00091 IF (ICPLTF.GE.ICPLTI) THEN 00092 C 00093 DO 212 J=0,LFI%JPNPDF-1 00094 INUMAP=LFI%NUMAPD(J,KRANG) 00095 C 00096 IF (INUMAP.GE.ICPLTI.AND.INUMAP.LE.ICPLTF) THEN 00097 INCPLT=INCPLT+1 00098 INUCPL(INCPLT)=INUMAP 00099 ICPTTN=MIN0 (ICPTTN,INUMAP) 00100 ICPTTX=MAX0 (ICPTTX,INUMAP) 00101 IDECDE=(INUMAP-IARDEB)*ILARPH-IDCDEB 00102 C 00103 DO 211 JD=1,ILARPH 00104 LFI%MTAMPD(IXT(JD,J,KRANG))=KTAB(IDECDE+JD) 00105 211 CONTINUE 00106 C 00107 LFI%NLONPD(J,KRANG)=ILARPH 00108 LFI%LECRPD(J,KRANG)=.TRUE. 00109 IF (INCPLT.GT.(ICPLTF-ICPLTI)) GOTO 220 00110 ENDIF 00111 C 00112 212 CONTINUE 00113 C 00114 ENDIF 00115 C 00116 220 CONTINUE 00117 C* 00118 C 2.2 - TRAITEMENT DE LA PREMIERE PAGE DE DONNEES, SI L'ARTICLE 00119 C LOGIQUE NE COMMENCE PAS JUSTE EN DEBUT D'ARTICLE PHYSIQUE. 00120 C CETTE PAGE EST CONSERVEE... DES FOIS QUE LE PROCHAIN ACCES 00121 C AU FICHIER SOIT POUR L'ARTICLE LOGIQUE IMMEDIATEMENT DEVANT 00122 C ( CAS DE BALAYAGE INVERSE DU FICHIER, PAR EXEMPLE ) . 00123 C----------------------------------------------------------------------- 00124 C 00125 IDECDE=0 00126 C 00127 IF (IDCDEB.EQ.0) THEN 00128 IPAREC=0 00129 ITAMLI=LFI%JPNPDF 00130 ELSE 00131 IPAREC=MIN0 (ILARPH*IARDEB,IPOFIN)-KPOSEC+1 00132 ITAMLI=LFI%JPNPDF-1 00133 C 00134 C L'ARTICLE DE DONNEES A ECRIRE NE COMMENCE PAS AU DEBUT D'UN 00135 C ARTICLE PHYSIQUE. IL FAUT DONC AVOIR CET ARTICLE PHYSIQUE 00136 C EN MEMOIRE POUR LE COMPLETER. 00137 C 00138 DO 222 J=1,LFI%JPNPDF 00139 INUMPJ=MOD (LFI%NDERPD(KRANG)+J,LFI%JPNPDF) 00140 C 00141 IF (LFI%NUMAPD(INUMPJ,KRANG).EQ.IARDEB) THEN 00142 C 00143 C ARTICLE PHYSIQUE CHERCHE EN MEMOIRE. 00144 C 00145 IF (LFI%NLONPD(INUMPJ,KRANG).LT.IDCDEB 00146 S .AND.IARDEB.LE.LFI%MDES1D(IXM(LFI%JPAXPD,KRANG))) THEN 00147 C 00148 C LA PAGE DE DONNEES EST INSUFFISAMMENT REMPLIE, ET A 00149 C UN ARTICLE ASSOCIE SUR FICHIER; IL FAUT DONC LIRE CET ARTICLE, 00150 C ET RECOLLER LES MORCEAUX... 00151 C 00152 INAPHY=IARDEB 00153 CALL LFILDO_MT (LFI, KREP,INUMER,IARDEB,IFOURT, 00154 S LFI%NBREAD(KRANG),IFACTM,IRETIN) 00155 C 00156 IF (IRETIN.NE.0) THEN 00157 GOTO 904 00158 ENDIF 00159 C 00160 DO 221 JD=LFI%NLONPD(INUMPJ,KRANG)+1,ILARPH 00161 LFI%MTAMPD(IXT(JD,INUMPJ,KRANG))=IFOURT(JD) 00162 221 CONTINUE 00163 C 00164 LFI%NLONPD(INUMPJ,KRANG)=ILARPH 00165 ENDIF 00166 C 00167 INUMPD=INUMPJ 00168 GOTO 223 00169 ENDIF 00170 C 00171 222 CONTINUE 00172 C 00173 C ARTICLE PHYSIQUE CHERCHE PAS EN MEMOIRE... ON DOIT DONC LE LIRE. 00174 C 00175 INUMPD=MOD (1+LFI%NDERPD(KRANG),LFI%JPNPDF) 00176 INAPHY=0 00177 C 00178 IF (LFI%LECRPD(INUMPD,KRANG)) THEN 00179 C 00180 CALL LFIVID_MT (LFI, KREP,KRANG,INUMPD,IFOURT,IRETIN) 00181 C 00182 IF (IRETIN.EQ.1) THEN 00183 GOTO 903 00184 ELSEIF (IRETIN.EQ.2) THEN 00185 GOTO 904 00186 ELSEIF (IRETIN.NE.0) THEN 00187 GOTO 1001 00188 ENDIF 00189 C 00190 ENDIF 00191 C 00192 LFI%NUMAPD(INUMPD,KRANG)=LFI%JPNIL 00193 INAPHY=IARDEB 00194 CALL LFILDO_MT (LFI, KREP,INUMER,IARDEB, 00195 S LFI%MTAMPD(IXT(1,INUMPD,KRANG)), 00196 S LFI%NBREAD(KRANG),IFACTM,IRETIN) 00197 C 00198 IF (IRETIN.NE.0) THEN 00199 GOTO 904 00200 ENDIF 00201 C 00202 LFI%NUMAPD(INUMPD,KRANG)=IARDEB 00203 LFI%NLONPD(INUMPD,KRANG)=ILARPH 00204 C 00205 223 CONTINUE 00206 C 00207 C COMPLEMENT DE LA PAGE DE DONNEES ASSOCIEE AU PREMIER ARTICLE 00208 C PHYSIQUE OU DOIVENT ETRE STOCKEES LES DONNEES A ECRIRE. 00209 C 00210 DO 224 JD=1,IPAREC 00211 LFI%MTAMPD(IXT(IDCDEB+JD,INUMPD,KRANG))=KTAB(JD) 00212 224 CONTINUE 00213 C 00214 LFI%LECRPD(INUMPD,KRANG)=.TRUE. 00215 LFI%NLONPD(INUMPD,KRANG)=MAX0 (LFI%NLONPD(INUMPD,KRANG), 00216 S IDCDEB+IPAREC) 00217 LFI%NDERPD(KRANG)=INUMPD 00218 ENDIF 00219 C* 00220 C 2.3 - ECRITURE DES ARTICLES PHYSIQUES COMPLETS NE TENANT PAS OU NE 00221 C DEVANT PAS ETRE STOCKES DANS LES PAGES DE DONNEES "TAMPON". 00222 C S'IL Y EN A, LES EVENTUELLES PAGES DE DONNEES COPIEES AUX 00223 C PARAGRAPHES PRECEDENTS (2.1 ET 2.2) PRECEDANT CES ARTICLES 00224 C DANS LE FICHIER SERONT ALORS ELLES AUSSI ECRITES SUR DISQUE. 00225 C----------------------------------------------------------------------- 00226 C 00227 IF (.NOT.LFI%LTAMPE(KRANG)) THEN 00228 ITAMLI=0 00229 ELSEIF (LLDERN) THEN 00230 ITAMLI=ITAMLI-1 00231 ENDIF 00232 C 00233 IARTIC=ICPLTI-1 00234 INPDRE=(KLONG-IPAREC-IDCFIN+ILARPH-1)/ILARPH-INCPLT 00235 INPDTA=MIN0 (INPDRE,ITAMLI) 00236 INPDIS=INPDRE-ITAMLI 00237 INDIK1=1 00238 INDIK2=INCPLT 00239 LLADON=.TRUE. 00240 C 00241 DO 235 J=1,INPDIS 00242 C 00243 231 CONTINUE 00244 IARTIC=IARTIC+1 00245 IF (LFI%LMISOP) WRITE (UNIT=LFI%NULOUT,FMT=*) 00246 S 'BOUCLE 235, J= ',J,', IARTIC= ',IARTIC,', IDECDE= ',IDECDE 00247 C 00248 IF (IARTIC.GE.ICPTTN.AND.IARTIC.LE.ICPTTX) THEN 00249 IF (IARTIC.EQ.ICPTTN) ICPTTN=ICPTTN+1 00250 IF (IARTIC.EQ.ICPTTX) ICPTTX=ICPTTX-1 00251 INDIC1=INDIK1 00252 INDIC2=INDIK2 00253 C 00254 C ON FILTRE LES ARTICLES PHYSIQUES DEJA STOCKES DANS DES PAGES 00255 C DE DONNEES LORS DE LA PARTIE 2.1 ... 00256 C 00257 DO 232 JI=INDIC1,INDIC2 00258 C 00259 IF (IARTIC.EQ.INUCPL(JI)) THEN 00260 IF (JI.EQ.INDIK1) INDIK1=INDIK1+1 00261 IF (JI.EQ.INDIK2) INDIK2=INDIK2-1 00262 GOTO 231 00263 ENDIF 00264 C 00265 232 CONTINUE 00266 C 00267 ENDIF 00268 C 00269 IDECDE=(IARTIC-IARDEB)*ILARPH-IDCDEB 00270 INAPHY=0 00271 CALL LFIECX_MT (LFI, KREP,KRANG,IARTIC,KTAB(IDECDE+1), 00272 S LLADON,IRETIN) 00273 C 00274 IF (IRETIN.EQ.1) THEN 00275 GOTO 903 00276 ELSEIF (IRETIN.EQ.2) THEN 00277 GOTO 904 00278 ELSEIF (IRETIN.NE.0) THEN 00279 GOTO 1001 00280 ENDIF 00281 C 00282 235 CONTINUE 00283 C* 00284 C 2.4 - ECRITURE DES ARTICLES PHYSIQUES COMPLETS QUE L'ON PEUT STOC- 00285 C KER DANS LES PAGES DE DONNEES "TAMPON". 00286 C ( TOUT EN PRESERVANT LES EMPLACEMENTS DE LA PREMIERE ET/OU 00287 C DE LA DERNIERE PAGE DE DONNEES, SI INCOMPLETE(S) ) 00288 C----------------------------------------------------------------------- 00289 C 00290 DO 246 J=1,INPDTA 00291 INUMPD=MOD (LFI%NDERPD(KRANG)+J,LFI%JPNPDF) 00292 C 00293 241 CONTINUE 00294 IARTIC=IARTIC+1 00295 C 00296 IF (IARTIC.GE.ICPTTN.AND.IARTIC.LE.ICPTTX) THEN 00297 IF (IARTIC.EQ.ICPTTN) ICPTTN=ICPTTN+1 00298 IF (IARTIC.EQ.ICPTTX) ICPTTX=ICPTTX-1 00299 INDIC1=INDIK1 00300 INDIC2=INDIK2 00301 C 00302 C ON FILTRE LES ARTICLES PHYSIQUES DEJA STOCKES DANS DES PAGES 00303 C DE DONNEES LORS DE LA PARTIE 2.1 ... 00304 C 00305 DO 242 JI=INDIC1,INDIC2 00306 C 00307 IF (IARTIC.EQ.INUCPL(JI)) THEN 00308 IF (JI.EQ.INDIK1) INDIK1=INDIK1+1 00309 IF (JI.EQ.INDIK2) INDIK2=INDIK2-1 00310 GOTO 241 00311 ENDIF 00312 C 00313 242 CONTINUE 00314 C 00315 ENDIF 00316 C 00317 C SI NECESSAIRE, "VIDAGE" SUR FICHIER DE LA PAGE A UTILISER. 00318 C 00319 INAPHY=0 00320 C 00321 IF (LFI%LECRPD(INUMPD,KRANG)) THEN 00322 C 00323 CALL LFIVID_MT (LFI, KREP,KRANG,INUMPD,IFOURT,IRETIN) 00324 C 00325 IF (IRETIN.EQ.1) THEN 00326 GOTO 903 00327 ELSEIF (IRETIN.EQ.2) THEN 00328 GOTO 904 00329 ELSEIF (IRETIN.NE.0) THEN 00330 GOTO 1001 00331 ENDIF 00332 C 00333 ENDIF 00334 C 00335 IDECDE=(IARTIC-IARDEB)*ILARPH-IDCDEB 00336 C 00337 DO 245 JD=1,ILARPH 00338 LFI%MTAMPD(IXT(JD,INUMPD,KRANG))=KTAB(IDECDE+JD) 00339 245 CONTINUE 00340 C 00341 LFI%LECRPD(INUMPD,KRANG)=.TRUE. 00342 LFI%NUMAPD(INUMPD,KRANG)=IARTIC 00343 LFI%NLONPD(INUMPD,KRANG)=ILARPH 00344 246 CONTINUE 00345 C 00346 LFI%NDERPD(KRANG)=MOD (LFI%NDERPD(KRANG)+INPDTA,LFI%JPNPDF) 00347 C* 00348 C 2.5 - TRAITEMENT DE LA DERNIERE PAGE DE DONNEES SI ELLE EST 00349 C INCOMPLETE, ET SI ON EST DANS L'UN DES 2 CAS SUIVANTS: 00350 C SOIT ELLE DIFFERE DE LA PREMIERE, SOIT C'EST LA MEME QUE LA 00351 C PREMIERE ET ELLE COMMENCE JUSTE EN DEBUT D'ARTICLE PHYSIQUE. 00352 C CETTE PAGE EST CONSERVEE...EN ESPERANT QUE LE PROCHAIN ACCES 00353 C AU FICHIER SERA POUR L'ARTICLE LOGIQUE IMMEDIATEMENT 00354 C DERRIERE ( CAS DE CREATION DU FICHIER, PAR EXEMPLE ) . 00355 C----------------------------------------------------------------------- 00356 C 00357 IF (LLDERN) THEN 00358 C 00359 DO 252 J=1,LFI%JPNPDF 00360 INUMPJ=MOD (LFI%NDERPD(KRANG)+J,LFI%JPNPDF) 00361 C 00362 IF (LFI%NUMAPD(INUMPJ,KRANG).EQ.IARFIN) THEN 00363 C 00364 C ARTICLE PHYSIQUE CHERCHE EN MEMOIRE. 00365 C 00366 INUMPD=INUMPJ 00367 GOTO 253 00368 ENDIF 00369 C 00370 252 CONTINUE 00371 C 00372 C ARTICLE PHYSIQUE CHERCHE PAS EN MEMOIRE... 00373 C 00374 INUMPD=MOD (1+LFI%NDERPD(KRANG),LFI%JPNPDF) 00375 INAPHY=0 00376 C 00377 IF (LFI%LECRPD(INUMPD,KRANG)) THEN 00378 C 00379 CALL LFIVID_MT (LFI, KREP,KRANG,INUMPD,IFOURT,IRETIN) 00380 C 00381 IF (IRETIN.EQ.1) THEN 00382 GOTO 903 00383 ELSEIF (IRETIN.EQ.2) THEN 00384 GOTO 904 00385 ELSEIF (IRETIN.NE.0) THEN 00386 GOTO 1001 00387 ENDIF 00388 C 00389 ENDIF 00390 C 00391 IF (IARFIN.LE.LFI%MDES1D(IXM(LFI%JPAXPD,KRANG))) THEN 00392 LFI%NUMAPD(INUMPD,KRANG)=LFI%JPNIL 00393 INAPHY=IARFIN 00394 CALL LFILDO_MT (LFI, KREP,INUMER,IARFIN, 00395 S LFI%MTAMPD(IXT(1,INUMPD,KRANG)), 00396 S LFI%NBREAD(KRANG),IFACTM,IRETIN) 00397 C 00398 IF (IRETIN.NE.0) THEN 00399 GOTO 904 00400 ENDIF 00401 C 00402 LFI%NLONPD(INUMPD,KRANG)=ILARPH 00403 ELSE 00404 LFI%NLONPD(INUMPD,KRANG)=0 00405 ENDIF 00406 C 00407 LFI%NUMAPD(INUMPD,KRANG)=IARFIN 00408 C 00409 253 CONTINUE 00410 IDECDE=(IARFIN-IARDEB)*ILARPH-IDCDEB 00411 C 00412 C COMPLEMENT DE LA PAGE DE DONNEES ASSOCIEE AU DERNIER ARTICLE 00413 C PHYSIQUE OU DOIVENT ETRE STOCKEES LES DONNEES A ECRIRE. 00414 C 00415 DO 254 JD=1,IDCFIN 00416 LFI%MTAMPD(IXT(JD,INUMPD,KRANG))=KTAB(IDECDE+JD) 00417 254 CONTINUE 00418 C 00419 LFI%LECRPD(INUMPD,KRANG)=.TRUE. 00420 LFI%NLONPD(INUMPD,KRANG)=MAX0 (LFI%NLONPD(INUMPD,KRANG),IDCFIN) 00421 LFI%NDERPD(KRANG)=INUMPD 00422 ENDIF 00423 C 00424 GOTO 1001 00425 C** 00426 C 9. - CI-DESSOUS, ETIQUETTES DE BRANCHEMENT EN CAS D'ERREUR E/S. 00427 C AU CAS OU, ON FORCE LE CODE-REPONSE ENTREE/SORTIE A ETRE POSITIF. 00428 C----------------------------------------------------------------------- 00429 C 00430 903 CONTINUE 00431 IRETOU=1 00432 CLACTI='WRITE' 00433 GOTO 909 00434 C 00435 904 CONTINUE 00436 IRETOU=2 00437 CLACTI='READ' 00438 C 00439 909 CONTINUE 00440 KREP=IABS (KREP) 00441 IF (INAPHY.NE.0) LFI%NUMAPH(KRANG)=INAPHY 00442 C** 00443 C 10. - PHASE TERMINALE : MESSAGERIE INTERNE EVENTUELLE, 00444 C VIA LE SOUS-PROGRAMME "LFIEMS", PUIS RETOUR. 00445 C----------------------------------------------------------------------- 00446 C 00447 1001 CONTINUE 00448 LLFATA=LLMOER (KREP,KRANG) 00449 C 00450 IF (KREP.EQ.0) THEN 00451 KRETIN=0 00452 ELSEIF (KREP.GT.0) THEN 00453 KRETIN=IRETOU 00454 ELSE 00455 KRETIN=3 00456 ENDIF 00457 C 00458 IF (LFI%LMISOP.OR.LLFATA) THEN 00459 INIMES=2 00460 CLNSPR='LFIECD' 00461 WRITE (UNIT=CLMESS,FMT='(''KREP='',I4,'', KRANG=' 00462 ',I3, S '', KLONG='',I7,'', KPOSEC='',I8,'', KRETIN='',I2)') 00463 S KREP, KRANG, KLONG, KPOSEC, KRETIN 00464 CALL LFIEMS_MT (LFI, INUMER,INIMES,KREP,.FALSE., 00465 S CLMESS,CLNSPR,CLACTI) 00466 ENDIF 00467 C 00468 IF (LHOOK) CALL DR_HOOK('LFIECD_MT',1,ZHOOK_HANDLE) 00469 END 00470