crepe2
C CREPE2 SOURCE GOUNAND 07/07/30 21:15:11 5819 $ 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
© Cast3M 2003 - Tous droits réservés.
Mentions légales