Télécharger enlev9.eso

Retour à la liste

Numérotation des lignes :

enlev9
  1. C ENLEV9 SOURCE SP204843 26/02/03 21:15:14 12461
  2. SUBROUTINE ENLEV9 (IPOINT,IEME,IPOIN3,IPOS)
  3. C***********************************************************************
  4. C
  5. C E N L E V 9
  6. C -----------
  7. C
  8. C FONCTION:
  9. C ---------
  10. C
  11. C ENLEVER LE I-EME "OBJET" D'UN "LISTOBJE"
  12.  
  13. C PARAMETRES: (E)=ENTREE (S)=SORTIE
  14. C -----------
  15. C
  16. C IPOINT ENTIER (E) POINTEUR SUR LE "LISTOBJE"
  17. C IEME ENTIER (E) NUMERO D'ORDRE DE L'"OBJET" A ENLEVER DANS
  18. C LA SUITE DE TYPE "LISTOBJE"
  19. C IPOIN3 ENTIER (S) POINTEUR DU 'LISTOBJE' 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 SERGE PASCAL 5 SEPTEMBRE 2024
  31. C
  32. C LANGAGE:
  33. C --------
  34. C
  35. C ESOPE + FORTRAN77
  36. C
  37. C***********************************************************************
  38. C
  39. IMPLICIT INTEGER(I-N)
  40.  
  41. -INC PPARAM
  42. -INC CCOPTIO
  43. -INC SMLOBJE
  44. -INC SMLENTI
  45. C
  46. MLOBJE = IPOINT
  47. SEGACT,MLOBJE
  48. NOBJ = LISOBJ(/1)
  49. NREE = RLIREE(/1)
  50. LDIM = MAX(NOBJ,NREE)
  51. IK = 1
  52. IF (TYPOBJ.EQ.'FLOTTANT') IK = 2
  53.  
  54. C Y a-t-il plusieurs remplacements a faire ?
  55. IF (IPOS.LT.0) THEN
  56. MLENT1=IEME
  57. NBENLE=MLENT1.LECT(/1)
  58.  
  59. IF (NBENLE .EQ. 0) THEN
  60. C Cas de la liste VIDE
  61. SEGINI,MLOBJ1=MLOBJE
  62. IPOIN3=MLOBJ1
  63. RETURN
  64. ENDIF
  65.  
  66. C Le LISTENTI est ordonne donc le min en 1 et le max en NBENLE
  67. IPOMIN=MLENT1.LECT(1)
  68. IPOMAX=MLENT1.LECT(NBENLE)
  69.  
  70. IF (IPOMIN.LT.1 ) THEN
  71. C L'indice %i1 est au dela des bornes de la liste
  72. INTERR(1) = IPOMIN
  73. CALL ERREUR(620)
  74. RETURN
  75. ELSEIF (IPOMAX.GT.LDIM) THEN
  76. C L'indice %i1 est au dela des bornes de la liste
  77. INTERR(1) = IPOMAX
  78. CALL ERREUR(620)
  79. RETURN
  80. ENDIF
  81.  
  82. ELSE
  83. NBENLE=1
  84. IF (IEME.LT.1 .OR. IEME.GT.LDIM) THEN
  85. C L'indice %i1 est au dela des bornes de la liste
  86. INTERR(1) = IEME
  87. CALL ERREUR(620)
  88. RETURN
  89. ENDIF
  90. ENDIF
  91. C
  92. NOBJ = 0
  93. NREE = 0
  94. IF (IK.EQ.1) NOBJ = LDIM - 1
  95. IF (IK.EQ.2) NREE = LDIM - 1
  96. SEGINI,MLOBJ1
  97. MLOBJ1.TYPOBJ = MLOBJE.TYPOBJ
  98. C
  99. IENLE = 1
  100. DO II=1,LDIM
  101. IF (IPOS.LT.0) IEME=MLENT1.LECT(IENLE)
  102. IF (II.EQ.IEME) THEN
  103. IENLE = IENLE + 1
  104. IF (IENLE.GT.NBENLE) GOTO 10
  105. ELSE
  106. IF (IK.EQ.1) MLOBJ1.LISOBJ(II-IENLE+1) = LISOBJ(II)
  107. IF (IK.EQ.2) MLOBJ1.RLIREE(II-IENLE+1) = RLIREE(II)
  108. ENDIF
  109. ENDDO
  110.  
  111. 10 IF (IEME.LT.LDIM) THEN
  112. DO II=IEME+1,LDIM
  113. IF (IK.EQ.1) MLOBJ1.LISOBJ(II-NBENLE) = LISOBJ(II)
  114. IF (IK.EQ.2) MLOBJ1.RLIREE(II-NBENLE) = RLIREE(II)
  115. ENDDO
  116. ENDIF
  117. C
  118. IF (IK.EQ.1) NOBJ = LDIM-NBENLE
  119. IF (IK.EQ.2) NREE = LDIM-NBENLE
  120. SEGADJ,MLOBJ1
  121. IPOIN3=MLOBJ1
  122. C SEGDES,MLOBJ1
  123.  
  124. RETURN
  125. END
  126.  
  127.  
  128.  
  129.  
  130.  

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