Download iuniq.eso

Back to the list

   1 : C IUNIQ     SOURCE    CHAT      05/01/13    00:45:28     5004           
   2 :       SUBROUTINE IUNIQ(LIDOUB,NBENTI,
   3 :      $     LIUNIQ,NBUNIQ,
   4 :      $     IMPR,IRET)
   5 :       IMPLICIT INTEGER(I-N)
   6 :       IMPLICIT REAL*8 (A-H,O-Z)
   7 : C***********************************************************************
   8 : C NOM         : IUNIQ
   9 : C PROJET      : Castem 2000
  10 : C DESCRIPTION : Une liste d'entiers avec des doublons => une liste
  11 : C               d'entiers sans doublons.
  12 : C
  13 : C LANGAGE     : Fortran 77 (sauf E/S)
  14 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  15 : C               mél : gounand@semt2.smts.cea.fr
  16 : C***********************************************************************
  17 : C APPELE PAR       :  PRASEM
  18 : C***********************************************************************
  19 : C ENTREES            : LIDOUB, NBENTI
  20 : C SORTIES            : LIUNIQ, NBUNIQ
  21 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  22 : C***********************************************************************
  23 : C VERSION    : v1, 05/10/99, version initiale
  24 : C HISTORIQUE : v1, 05/10/99, création
  25 : C HISTORIQUE :
  26 : C HISTORIQUE :
  27 : C***********************************************************************
  28 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  29 : C en cas de modification de ce sous-programme afin de faciliter
  30 : C la maintenance !
  31 : C***********************************************************************
  32 : -INC CCOPTIO
  33 :       INTEGER NBENTI,NBUNIQ
  34 :       INTEGER LIDOUB(NBENTI)
  35 :       INTEGER LIUNIQ(NBUNIQ)
  36 : *
  37 :       INTEGER IMPR,IRET
  38 : *
  39 :       INTEGER I,J
  40 :       LOGICAL LFOUND
  41 : *     
  42 : * Executable statements
  43 : *
  44 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans iuniq'
  45 :       NBUNIQ=1
  46 :       LIUNIQ(1)=LIDOUB(1)
  47 :       DO 1 I=2,NBENTI
  48 :          LFOUND=.FALSE.
  49 :          J=0
  50 :  12      CONTINUE
  51 :          J=J+1
  52 :          IF (LIUNIQ(J).EQ.LIDOUB(I)) THEN
  53 :             LFOUND=.TRUE.
  54 :          ELSE
  55 :             IF (J.LT.NBUNIQ) THEN
  56 :                GOTO 12
  57 :             ENDIF
  58 :          ENDIF
  59 :          IF (.NOT.LFOUND) THEN
  60 :             NBUNIQ=NBUNIQ+1
  61 :             LIUNIQ(NBUNIQ)=LIDOUB(I)
  62 :          ENDIF
  63 :  1    CONTINUE
  64 : *
  65 : * Normal termination
  66 : *
  67 :       IRET=0
  68 :       RETURN
  69 : *     
  70 : * Format handling
  71 : *
  72 : *
  73 : * Error handling
  74 : *
  75 :  9999 CONTINUE
  76 :       IRET=1
  77 :       WRITE(IOIMP,*) 'An error was detected in subroutine iuniq'
  78 :       RETURN
  79 : *
  80 : * End of subroutine IUNIQ
  81 : *
  82 :       END
  83 : 
  84 :  
  85 :  

© Cast3M 2003 - All rights reserved.
Disclaimer