Download cuniq.eso

Back to the list

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

© Cast3M 2003 - All rights reserved.
Disclaimer