Télécharger ifidic.eso

Retour à la liste

Numérotation des lignes :

ifidic
  1. C IFIDIC SOURCE CHAT 05/01/13 00:32:50 5004
  2. SUBROUTINE IFIDIC(LONTAB,TAB,VAL,
  3. $ IDX,
  4. $ IMPR,IRET)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. C***********************************************************************
  8. C NOM : IFIDIC
  9. C DESCRIPTION : Recherche l'index d'une valeur dans un tableau ordonné
  10. C d'entiers.
  11. C
  12. C Cherche IDX dans un tableau ordonné d'entiers TAB
  13. C tel que : TAB(IDX)=VAL
  14. C La méthode utilisée est un binary search decrite dans
  15. C The art of Programming Vol.3 (D. Knuth)
  16. C
  17. C
  18. C LANGAGE : FORTRAN 77 (sauf (E/S)
  19. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  20. C mél : gounand@semt2.smts.cea.fr
  21. C***********************************************************************
  22. C APPELE PAR : MKIZA
  23. C***********************************************************************
  24. C ENTREES : LONTAB, TAB, VAL
  25. C SORTIES : IDX
  26. C***********************************************************************
  27. C VERSION : v1, 08/10/99, version initiale
  28. C HISTORIQUE : v1, 08/10/99, création
  29. C HISTORIQUE :
  30. C HISTORIQUE :
  31. C***********************************************************************
  32. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  33. C en cas de modification de ce sous-programme afin de faciliter
  34. C la maintenance !
  35. C***********************************************************************
  36.  
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. INTEGER LONTAB
  40. INTEGER TAB(LONTAB)
  41. INTEGER VAL,IDX
  42. *
  43. INTEGER IMPR,IRET
  44. *
  45. INTEGER IDXINF,IDXMIL,IDXSUP
  46. INTEGER VALMIL
  47. C
  48. C Executable statements
  49. C
  50. IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans ifidic'
  51. IDXINF=1
  52. IDXSUP=LONTAB
  53. 1 CONTINUE
  54. IF (IDXSUP.LT.IDXINF) GOTO 9998
  55. IDXMIL=(IDXINF+IDXSUP)/2
  56. VALMIL=TAB(IDXMIL)
  57. IF (VAL.LT.VALMIL) THEN
  58. IDXSUP=IDXMIL-1
  59. GOTO 1
  60. ELSEIF (VAL.GT.VALMIL) THEN
  61. IDXINF=IDXMIL+1
  62. GOTO 1
  63. ELSE
  64. IDX=IDXMIL
  65. ENDIF
  66. *
  67. * Normal termination
  68. *
  69. IRET=0
  70. RETURN
  71. *
  72. * Format handling
  73. *
  74. *
  75. * Error handling
  76. *
  77. 9998 CONTINUE
  78. WRITE(IOIMP,*) 'La valeur n''est pas dans le tableau ',
  79. $ 'ou le tableau n''est pas ordonnée...'
  80. 9999 CONTINUE
  81. IRET=1
  82. WRITE(IOIMP,*) 'An error was detected in subroutine ifidic'
  83. RETURN
  84. *
  85. * End of subroutine IFIDIC
  86. *
  87. END
  88.  
  89.  
  90.  
  91.  

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