Télécharger lirmot.eso

Retour à la liste

Numérotation des lignes :

  1. C LIRMOT SOURCE BP208322 17/10/24 21:15:01 9595
  2. C CE PROGRAMME PERMET DE SIMULER UN SOUS-TYPAGE AU NIVEAU DES MOTS
  3. C
  4. SUBROUTINE LIRMOT(MOTCLE,MOTDI ,IVAL,ICOND)
  5.  
  6. C MOTCLE TABLEAU DES MOTS CLES POSSIBLES
  7. C MOTDI +/-DIMENSION DE MOTCLE
  8. C si MOTDI<0, on souhaite utiliser des abreviations(#7969)
  9. C IVAL POSITION DU MOT TROUVE DANS MOTCLE (0) SI ECHEC
  10. C ICOND LECTURE IMPERATIVE (=1) OU NON (=0)
  11.  
  12. IMPLICIT INTEGER(I-N)
  13. CHARACTER*(*) MOTCLE(*)
  14. CHARACTER*500 MOT
  15. EXTERNAL LONG
  16.  
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20.  
  21. C MOTDIM DIMENSION DE MOTCLE
  22. motdim=abs(motdi)
  23. IVAL=0
  24. IV=0
  25.  
  26. c LECTURE D'UNE CHAINE DE LMOT CARACTERES
  27. ICONDO=ICOND
  28. LMOT=LEN(MOTCLE(1))
  29. CALL LIRCHA(MOT(1:LMOT),ICONDO,IRETOU)
  30. IF (IERR.NE.0) RETURN
  31. IF (IRETOU.EQ.0) RETURN
  32.  
  33. c RECHERCHE DE CE MOT DANS LA LISTE DES MOTS-CLES
  34. DO 1 I=1,MOTDIM
  35. IF (MOT(1:LMOT).EQ.MOTCLE(I)) GOTO 2
  36. 1 CONTINUE
  37. i=0
  38. if (motdi.gt.0) goto 4
  39.  
  40. c CAS ABBREVATION : RECHERCHE DE CE MOT DANS LA LISTE DES MOTS-CLES
  41. C ABBREGES A LA TAILLE DU MOT
  42. LLU=LONG(MOT(1:LMOT))
  43. ITROUV=0
  44. DO 5 I=1,MOTDIM
  45. IF (MOT(1:LLU).NE.MOTCLE(I)(1:MIN(LLU,LMOT))) GOTO 5
  46. ITROUV=ITROUV+1
  47. IV=I
  48. 5 CONTINUE
  49. I=IV
  50. IF (ITROUV.EQ.1) GOTO 2
  51. 4 CONTINUE
  52.  
  53. c MOT NON TROUVE DANS LA LISTE : ON TESTE SI IL S'AGIT DE "?"
  54. IF (MOT(1:2).NE.'? ') GOTO 3
  55.  
  56. c CAS "?" : ON ECRIT LA LISTE ET ON QUITTE
  57. WRITE (IOIMP,100) (MOTCLE(IM),IM=1,MOTDIM)
  58. 100 FORMAT(/,' LISTE DES MOTS RECONNUS',/,(1H ,10A8))
  59. CALL REFUS
  60. RETURN
  61.  
  62. c ECHEC : SI LECTURE OBLIGATOIRE, ON PRODUIT UNE ERREUR
  63. C ET DANS TOUS LES CAS, ON QUITTE
  64. 3 CALL REFUS
  65. MOTERR(1:8)=MOT(1:8)
  66. IF (ICOND.EQ.1) THEN
  67. CALL ERREUR(7)
  68. WRITE(IOIMP,110) (MOTCLE(I),I=1,MOTDIM)
  69. 110 FORMAT(10(1H ,A8))
  70. ENDIF
  71. RETURN
  72.  
  73. c SUCCES : ON RETOURNE L'INDICE DANS LA LISTE
  74. 2 CONTINUE
  75. IVAL=I
  76. RETURN
  77. END
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  

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