iuniq
C IUNIQ SOURCE GOUNAND 14/05/28 21:15:08 8056 $ LIUNIQ,NBUNIQ, $ IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : IUNIQ C PROJET : Castem 2000 C DESCRIPTION : Une liste d'entiers avec des doublons => une liste C d'entiers sans doublons. 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 : LIDOUB, NBENTI C SORTIES : LIUNIQ, NBUNIQ 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 NBENTI,NBUNIQ INTEGER LIDOUB(NBENTI) * sg: INTEGER LIUNIQ(NBUNIQ) provoque une erreur * NBUNIQ used before set avec ftnchek INTEGER LIUNIQ(*) * INTEGER IMPR,IRET * INTEGER I,J LOGICAL LFOUND * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans iuniq' NBUNIQ=1 LIUNIQ(1)=LIDOUB(1) DO 1 I=2,NBENTI LFOUND=.FALSE. J=0 12 CONTINUE J=J+1 IF (LIUNIQ(J).EQ.LIDOUB(I)) THEN LFOUND=.TRUE. ELSE IF (J.LT.NBUNIQ) THEN GOTO 12 ENDIF ENDIF IF (.NOT.LFOUND) THEN NBUNIQ=NBUNIQ+1 LIUNIQ(NBUNIQ)=LIDOUB(I) ENDIF 1 CONTINUE * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine iuniq' RETURN * * End of subroutine IUNIQ * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales