      SUBROUTINE LFINUM ( KNUMER, KRANG )
#include "lficomt.h"
C****
C        CE SOUS-PROGRAMME CALCULE LE RANG DU NUMERO D'UNITE LOGIQUE
C     *KNUMER* DANS LA TABLE DES UNITES LOGIQUES *NUMERO*;
C     S'IL N'Y EST PAS TROUVE, LE RESULTAT EST ZERO.
C        CE SOUS-PROGRAMME, APPELE PAR *TOUS* LES SOUS-PROGRAMMES NON
C     GLOBAUX DU LOGICIEL DE FICHIERS INDEXES LFI, SE CHARGE LORS DE SON
C     PREMIER APPEL D'APPELER LE SOUS-PROGRAMME PREPARATOIRE LFIINI.
C**
C       ARGUMENTS : KNUMER (ENTREE) ==> NUMERO D'UNITE LOGIQUE CHERCHE;
C                   KRANG  (SORTIE) ==> RANG DANS LA TABLE DES FICHIERS
C                                       DU LOGICIEL LFI (0 SI ABSENT).
C
#include "lficom0.h"
#ifndef f77
#include "precision.h"
#endif
#include "lficom1.h"
C
      INTEGER KNUMER, KRANG, J, IRESUL, IREP, INIMES
C
      LOGICAL LLPREA
      SAVE LLPREA
C
      DATA LLPREA/ .TRUE. /
C
      IF (LLPREA) THEN
        CALL LFIINI (2)
        LLPREA=.FALSE.
      ENDIF
C
C          VERROUILLAGE GLOBAL (A CAUSE DE L'UTILISATION DE NBFIOU )
C
       IF (LMULTI) CALL LFIVER (VERGLA,'ON')
C
      DO 10 J=1,NBFIOU
C
      IF (KNUMER.EQ.NUMERO(NUMIND(J))) THEN
        IRESUL=NUMIND(J)
        GOTO 20
      ENDIF
C
   10 CONTINUE
C
      IRESUL=0
C
   20 CONTINUE
C
C          DEVERROUILLAGE GLOBAL
C
       IF (LMULTI) CALL LFIVER (VERGLA,'OFF')
      KRANG=IRESUL
C**
C    10.  -  PHASE TERMINALE : MESSAGERIE INTERNE EVENTUELLE,
C            VIA LE SOUS-PROGRAMME "LFIEMS", PUIS RETOUR.
C-----------------------------------------------------------------------
C
      IF (LMISOP) THEN
        IREP=0
        INIMES=2
        CLNSPR='LFINUM'
        WRITE (UNIT=CLMESS,FMT='(''KNUMER='',I3,'', KRANG='',I3)')
     S    KNUMER,KRANG
        CALL LFIEMS (KNUMER,INIMES,IREP,.FALSE.,CLMESS,CLNSPR,CLACTI)
      ENDIF
C
      RETURN
      END
