Download ifidic.eso

Back to the list

   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 : -INC CCOPTIO
  37 :       INTEGER LONTAB
  38 :       INTEGER TAB(LONTAB)
  39 :       INTEGER VAL,IDX
  40 : *
  41 :       INTEGER IMPR,IRET
  42 : *
  43 :       INTEGER IDXINF,IDXMIL,IDXSUP
  44 :       INTEGER VALMIL
  45 : C
  46 : C  Executable statements
  47 : C
  48 :       IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans ifidic'
  49 :       IDXINF=1
  50 :       IDXSUP=LONTAB
  51 :  1    CONTINUE
  52 :       IF (IDXSUP.LT.IDXINF) GOTO 9998
  53 :       IDXMIL=(IDXINF+IDXSUP)/2
  54 :       VALMIL=TAB(IDXMIL)
  55 :       IF (VAL.LT.VALMIL) THEN
  56 :          IDXSUP=IDXMIL-1
  57 :          GOTO 1
  58 :       ELSEIF (VAL.GT.VALMIL) THEN
  59 :          IDXINF=IDXMIL+1
  60 :          GOTO 1
  61 :       ELSE
  62 :          IDX=IDXMIL
  63 :       ENDIF
  64 : *
  65 : * Normal termination
  66 : *
  67 :       IRET=0
  68 :       RETURN
  69 : *
  70 : * Format handling
  71 : *
  72 : *
  73 : * Error handling
  74 : *
  75 :  9998 CONTINUE
  76 :       WRITE(IOIMP,*) 'La valeur n''est pas dans le tableau ',
  77 :      $     'ou le tableau n''est pas ordonnée...'
  78 :  9999 CONTINUE
  79 :       IRET=1
  80 :       WRITE(IOIMP,*) 'An error was detected in subroutine ifidic'
  81 :       RETURN
  82 : *
  83 : * End of subroutine IFIDIC
  84 : *
  85 :       END
  86 : 
  87 :  
  88 :  

© Cast3M 2003 - All rights reserved.
Disclaimer