Télécharger iuniq.eso

Retour à la liste

Numérotation des lignes :

  1. C IUNIQ SOURCE GOUNAND 14/05/28 21:15:08 8056
  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. * sg: INTEGER LIUNIQ(NBUNIQ) provoque une erreur
  36. * NBUNIQ used before set avec ftnchek
  37. INTEGER LIUNIQ(*)
  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 iuniq'
  47. NBUNIQ=1
  48. LIUNIQ(1)=LIDOUB(1)
  49. DO 1 I=2,NBENTI
  50. LFOUND=.FALSE.
  51. J=0
  52. 12 CONTINUE
  53. J=J+1
  54. IF (LIUNIQ(J).EQ.LIDOUB(I)) THEN
  55. LFOUND=.TRUE.
  56. ELSE
  57. IF (J.LT.NBUNIQ) THEN
  58. GOTO 12
  59. ENDIF
  60. ENDIF
  61. IF (.NOT.LFOUND) THEN
  62. NBUNIQ=NBUNIQ+1
  63. LIUNIQ(NBUNIQ)=LIDOUB(I)
  64. ENDIF
  65. 1 CONTINUE
  66. *
  67. * Normal termination
  68. *
  69. IRET=0
  70. RETURN
  71. *
  72. * Format handling
  73. *
  74. *
  75. * Error handling
  76. *
  77. 9999 CONTINUE
  78. IRET=1
  79. WRITE(IOIMP,*) 'An error was detected in subroutine iuniq'
  80. RETURN
  81. *
  82. * End of subroutine IUNIQ
  83. *
  84. END
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales