creper
C CREPER SOURCE CB215821 20/11/25 13:23:21 10792 $ LISINC,LISREP, $ KRINRE, $ IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : CREPER 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' 'TN' 'PN' C LISREP = 'UN' 'VN' 'PN' 'TN' 'KN' C KRINRE = 1 3 4 3 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 C En attendant que tout soit bien au point avec LOCOMP C Je recopie dans des chaines de longueur LOCOMP * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entree dans creper' * DO 1 IINC=1,LNINC LFOUND=.FALSE. IREP=0 12 CONTINUE IREP=IREP+1 CHINC=LISINC(IINC) LFOUND=.TRUE. ELSE IF(IREP.LT.LNREP) GOTO 12 ENDIF IF (.NOT.LFOUND) THEN WRITE(IOIMP,*) 'Un element de LISINC n''est pas dans LISREP' GOTO 9999 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 creper' RETURN * * End of subroutine CREPER * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales