C CREPE2    SOURCE    GOUNAND   07/07/30    21:15:11     5819
      SUBROUTINE CREPE2(LNMOTS,LNINC,LNREP,
     $     LISINC,LISREP,
     $     KRINRE,
     $     IMPR,IRET)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C***********************************************************************
C NOM         : CREPE2
C PROJET      : Noyau linéaire NLIN
C DESCRIPTION : Deux tableaux de mots => un tableau d'entiers qui sont
C               les indices des mots du premier tableau dans le deuxième
C               tableau.
C               On construit KRINRE, liste d'entier de repérage des
C               chaines de caractères stockées dans LISINC, par rapport
C               aux chaines de caractères (supposées sans doublons)
C               de LISREP.
C
C       Exemple : LISINC = 'UN' 'PN' 'DN' 'TN' 'PN'
C                 LISREP = 'UN' 'VN' 'PN' 'TN'
C                 KRINRE =   1    3    0    4    3
C
C   Cette subroutine est identique à creper mais elle ne génère pas
C   d'erreurs.
C
C
C LANGAGE     : FORTRAN 77 (sauf E/S)
C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
C               mél : gounand@semt2.smts.cea.fr
C***********************************************************************
C APPELE PAR       : PRASEM
C***********************************************************************
C ENTREES            : LNMOTS, LNINC, LNREP, LISINC, LISREP
C SORTIES            : KRINRE
C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
C***********************************************************************
C VERSION    : v1, 05/10/99, version initiale
C HISTORIQUE : v1, 05/10/99, création
C HISTORIQUE :
C HISTORIQUE :
C***********************************************************************
C Prière de PRENDRE LE TEMPS de compléter les commentaires
C en cas de modification de ce sous-programme afin de faciliter
C la maintenance !
C***********************************************************************

-INC PPARAM
-INC CCOPTIO
      INTEGER LNMOTS,LNINC,LNREP
      CHARACTER*(*) LISINC(LNINC)
      CHARACTER*(*) LISREP(LNREP)
*
      INTEGER KRINRE(LNINC)
*
      INTEGER IMPR,IRET
*
      LOGICAL LFOUND
      INTEGER IINC,IREP
*
* Executable statements
*
      IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans crepe2'
*
      DO 1 IINC=1,LNINC
         LFOUND=.FALSE.
         IREP=0
 12      CONTINUE
         IREP=IREP+1
         IF (LISINC(IINC)(1:LNMOTS).EQ.LISREP(IREP)(1:LNMOTS)) THEN
            LFOUND=.TRUE.
         ELSE
            IF (IREP.LT.LNREP) THEN
               GOTO 12
            ENDIF
         ENDIF
         IF (.NOT.LFOUND) THEN
            KRINRE(IINC)=0
         ELSE
            KRINRE(IINC)=IREP
         ENDIF
 1    CONTINUE
*
* Normal termination
*
      IRET=0
      RETURN
*
* Format handling
*
*
* Error handling
*
 9999 CONTINUE
      IRET=1
      WRITE(IOIMP,*) 'An error was detected in subroutine crepe2'
      RETURN
*
* End of subroutine CREPE2
*
      END




