C LIRMO3    SOURCE    CB215821  23/02/02    21:15:06     11576          
      SUBROUTINE LIRMO3(MOTCLE,MOTDIM,IVAL,ICOND,ICOHCO)
C     MOTCLE TABLEAU DES MOTS CLES POSSIBLES
C     MOTDIM DIMENSION DE MOTCLE
C     IVAL   POSITION DU MOT TROUVE DANS MOTCLE (0) SI ECHEC
C     ICOND  LECTURE IMPERATIVE OU NON

      IMPLICIT INTEGER(I-N)
      
-INC PPARAM
-INC CCOPTIO
-INC CCNOYAU
-INC CCASSIS

      DIMENSION          ICOHCO(*)
      CHARACTER*(*)      MOTCLE(*)
      CHARACTER*(LOCHAI) MOT
      CHARACTER*8        ITOMO


        L=LEN(MOTCLE(1))
*        WRITE(6,FMT='('' lirmo3 ico(1) '',i5)') icohco(1)
        IF(ICOHCO(1).EQ.-1) THEN
         DO 5198 I=1,MOTDIM
           IA=0
           DO 5199 J=1,L
             IA = IA + ICHAR(MOTCLE(I)(J:J))
 5199      CONTINUE
           ICOHCO(I) = IA
 5198    CONTINUE
      ENDIF
      IVAL=0


      ICONDO=ICOND

      DO 36 K=1,100000
        ITOMO ='MOT     '
        CALL LIRABJ(ITOMO,IRAT,ICONDO,IRETOU)
        if(nbesc.ne.0) segact ipiloc
        IF (IERR.NE.0) RETURN

        IF (IRETOU.EQ.0) GO TO 35
        JF = IPCHAR(IRAT+1)-1
        ID = IPCHAR(IRAT)
        MOT= ICHARA(ID:JF)

        IA=0
        DO 65 I=1,L
          IA=IA + ICHAR(MOT(I:I))
  65    CONTINUE

        DO 1 I=1,MOTDIM
          IF(IA.NE.ICOHCO(I)) GO TO 1
          IF (MOT(1:L).EQ.MOTCLE(I)) GOTO 2
   1    CONTINUE
        
  35    CALL NOUTRU
        if(nbesc.ne.0) SEGDES,IPILOC
  36  CONTINUE

   2  CONTINUE
      IVAL=I
      RETURN
      END
 
