Télécharger enlev3.eso

Retour à la liste

Numérotation des lignes :

  1. C ENLEV3 SOURCE CB215821 18/01/29 21:15:05 9715
  2. SUBROUTINE ENLEV3 (IPOINT,IEME,IPOIN3,IPOS)
  3. C***********************************************************************
  4. C
  5. C E N L E V 3
  6. C -----------
  7. C
  8. C FONCTION:
  9. C ---------
  10. C
  11. C ENLEVER LE I-EME ELEMENT D'UN OBJET DE TYPE "LISTMOTS".
  12. C
  13. C PARAMETRES: (E)=ENTREE (S)=SORTIE
  14. C -----------
  15. C
  16. C IEME ENTIER (E) NUMERO D'ORDRE DE L'ELEMENT A ENLEVER DANS
  17. C L'OBJET DE TYPE "LISTMOTS".
  18. C IPOINT ENTIER (E) POINTEUR DE L'OBJET DE TYPE "LISTMOTS".
  19. C IPOIN3 ENTIER (S) POINTEUR DU 'LISTMOTS' CREE.
  20. C IPOS ENTIER (E) SI NEGATIF, IEME EST UN POINTEUR "LISTENTI"
  21. C
  22. C SOUS-PROGRAMMES APPELES:
  23. C ------------------------
  24. C
  25. C ERREUR
  26. C
  27. C AUTEUR, DATE DE CREATION:
  28. C -------------------------
  29. C
  30. C PASCAL MANIGOT 6 DECEMBRE 1984
  31. C
  32. C LANGAGE:
  33. C --------
  34. C
  35. C ESOPE + FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS
  36. C
  37. C***********************************************************************
  38. C
  39. IMPLICIT INTEGER(I-N)
  40. -INC CCOPTIO
  41. -INC SMLMOTS
  42. -INC SMLENTI
  43. C
  44. MLMOTS = IPOINT
  45. SEGACT,MLMOTS
  46. LDIM = MOTS(/2)
  47.  
  48. C Y a-t-il plusieurs remplacements a faire ?
  49. IF (IPOS.LT.0) THEN
  50. MLENT1=IEME
  51. NBENLE=MLENT1.LECT(/1)
  52.  
  53. IF (NBENLE .EQ. 0) THEN
  54. C Cas de la liste VIDE
  55. SEGINI,MLMOT1=MLMOTS
  56. IPOIN3=MLMOT1
  57. RETURN
  58. ENDIF
  59.  
  60. C Le LISTENTI est ordonne donc le min en 1 et le max en NBENLE
  61. IPOMIN=MLENT1.LECT(1)
  62. IPOMAX=MLENT1.LECT(NBENLE)
  63.  
  64. IF (IPOMIN.LT.1 ) THEN
  65. C L'indice %i1 est au dela des bornes de la liste
  66. INTERR(1) = IPOMIN
  67. CALL ERREUR(620)
  68. RETURN
  69. ELSEIF (IPOMAX.GT.LDIM) THEN
  70. C L'indice %i1 est au dela des bornes de la liste
  71. INTERR(1) = IPOMAX
  72. CALL ERREUR(620)
  73. RETURN
  74. ENDIF
  75.  
  76. ELSE
  77. NBENLE=1
  78. IF (IEME.LT.1 .OR. IEME.GT.LDIM) THEN
  79. C L'indice %i1 est au dela des bornes de la liste
  80. INTERR(1) = IEME
  81. CALL ERREUR(620)
  82. RETURN
  83. ENDIF
  84. ENDIF
  85. C
  86. JGN=MOTS(/1)
  87. JGM=LDIM - 1
  88. SEGINI,MLMOT1
  89. C
  90. IENLE = 1
  91. DO II=1,LDIM
  92. IF (IPOS.LT.0) IEME=MLENT1.LECT(IENLE)
  93. IF (II.EQ.IEME) THEN
  94. IENLE = IENLE + 1
  95. IF (IENLE.GT.NBENLE) GOTO 10
  96. ELSE
  97. MLMOT1.MOTS(II-IENLE+1) = MOTS(II)
  98. ENDIF
  99. ENDDO
  100.  
  101. 10 IF (IEME.LT.LDIM) THEN
  102. DO II=IEME+1,LDIM
  103. MLMOT1.MOTS(II-NBENLE) = MOTS(II)
  104. ENDDO
  105. ENDIF
  106. C
  107. JGM=LDIM-NBENLE
  108. SEGADJ,MLMOT1
  109. IPOIN3=MLMOT1
  110. SEGDES,MLMOT1
  111.  
  112. RETURN
  113. END
  114.  
  115.  
  116.  

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