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.  
  33. -INC PPARAM
  34. -INC CCOPTIO
  35. INTEGER NBENTI,NBUNIQ
  36. INTEGER LIDOUB(NBENTI)
  37. * sg: INTEGER LIUNIQ(NBUNIQ) provoque une erreur
  38. * NBUNIQ used before set avec ftnchek
  39. INTEGER LIUNIQ(*)
  40. *
  41. INTEGER IMPR,IRET
  42. *
  43. INTEGER I,J
  44. LOGICAL LFOUND
  45. *
  46. * Executable statements
  47. *
  48. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans iuniq'
  49. NBUNIQ=1
  50. LIUNIQ(1)=LIDOUB(1)
  51. DO 1 I=2,NBENTI
  52. LFOUND=.FALSE.
  53. J=0
  54. 12 CONTINUE
  55. J=J+1
  56. IF (LIUNIQ(J).EQ.LIDOUB(I)) THEN
  57. LFOUND=.TRUE.
  58. ELSE
  59. IF (J.LT.NBUNIQ) THEN
  60. GOTO 12
  61. ENDIF
  62. ENDIF
  63. IF (.NOT.LFOUND) THEN
  64. NBUNIQ=NBUNIQ+1
  65. LIUNIQ(NBUNIQ)=LIDOUB(I)
  66. ENDIF
  67. 1 CONTINUE
  68. *
  69. * Normal termination
  70. *
  71. IRET=0
  72. RETURN
  73. *
  74. * Format handling
  75. *
  76. *
  77. * Error handling
  78. *
  79. 9999 CONTINUE
  80. IRET=1
  81. WRITE(IOIMP,*) 'An error was detected in subroutine iuniq'
  82. RETURN
  83. *
  84. * End of subroutine IUNIQ
  85. *
  86. END
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  

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