Télécharger rempl3.eso

Retour à la liste

Numérotation des lignes :

rempl3
  1. C REMPL3 SOURCE BP208322 23/03/13 21:15:02 11627
  2. *
  3. SUBROUTINE REMPL3 (IPOINT,IEME,LEMOT,IPLISM,IPOS)
  4. ************************************************************************
  5. *
  6. * R E M P L 3
  7. * -----------
  8. *
  9. * FONCTION:
  10. * ---------
  11. *
  12. * REMPLACER LE I-EME ELEMENT D'UN OBJET DE TYPE 'LISTMOTS'.
  13. *
  14. * MODE D'APPEL:
  15. * -------------
  16. *
  17. * CALL REMPL3 (IPOINT,IEME,LEMOT)
  18. *
  19. * PARAMETRES: (E)=ENTREE (S)=SORTIE
  20. * -----------
  21. *
  22. * IPOINT ENTIER (E) POINTEUR DE L'OBJET DE TYPE "LISTMOTS".
  23. * IEME ENTIER (E) NUMERO D'ORDRE DE L'ELEMENT A REMPLACER
  24. * DANS L'OBJET DE TYPE "LISTMOTS".
  25. * LEMOT ENTIER (E) ELEMENT REMPLACANT (CONTIENT UNE CHAINE DE
  26. * CARACTERES).
  27. * IPLISM ENTIER (E) POINTEUR VERS UN "LISTMOTS" DE REMPLACANTS
  28. * IPOS ENTIER (E) SI NEGATIF, IEME EST UN POINTEUR "LISTENTI"
  29. *
  30. * SOUS-PROGRAMMES APPELES:
  31. * ------------------------
  32. *
  33. * ERREUR
  34. *
  35. * AUTEUR, DATE DE CREATION:
  36. * -------------------------
  37. *
  38. * PASCAL MANIGOT 5 DECEMBRE 1984
  39. *
  40. * LANGAGE:
  41. * --------
  42. *
  43. * ESOPE + FORTRAN77 + EXTENSION: CARACTERES MIS DANS DES ENTIERS
  44. *
  45. ************************************************************************
  46. *
  47. IMPLICIT INTEGER(I-N)
  48. *
  49.  
  50. -INC PPARAM
  51. -INC CCOPTIO
  52. -INC SMLENTI
  53. -INC SMLMOTS
  54. *
  55. EXTERNAL LONG
  56. CHARACTER*(LOCHAI) LEMOT
  57. *
  58. MLMOTS=IPOINT
  59. SEGACT,MLMOTS*MOD
  60. JGN=MOTS(/1)
  61. *
  62. * Y a-t-il plusieurs remplacements a faire ?
  63. NBRMPL=1
  64. IF (IPOS.LT.0) THEN
  65. MLENT1=IEME
  66. SEGACT,MLENT1
  67. NBRMPL=MLENT1.LECT(/1)
  68. *
  69. * Y a-t-il des valeurs de remplacement distinctes ?
  70. IF (IPLISM.NE.0) THEN
  71. MLMOT1=IPLISM
  72. SEGACT,MLMOT1
  73. IF (MLMOT1.MOTS(/2).NE.NBRMPL) THEN
  74. MOTERR(1:8)='LISTxxxx'
  75. CALL ERREUR(1015)
  76. RETURN
  77. ENDIF
  78. ENDIF
  79. ENDIF
  80. *
  81. * Mise a jour du LISTMOTS
  82. DO II=1,NBRMPL
  83. IF (IPOS.LT.0) IEME=MLENT1.LECT(II)
  84. IF (IPLISM.NE.0) LEMOT=MLMOT1.MOTS(II)
  85. IF (0.LT.IEME.AND.IEME.LE.MOTS(/2)) THEN
  86. NCHARii = LONG(LEMOT)
  87. IF(NCHARii.GT.JGN) THEN
  88. JGN=NCHARii
  89. SEGADJ,MLMOTS
  90. ENDIF
  91. MOTS(IEME)=LEMOT
  92. ELSE
  93. INTERR(1)=IEME
  94. CALL ERREUR(36)
  95. ENDIF
  96. ENDDO
  97. * bp: on pourrait aussi vérifier que JGN n'a pas diminué et faire un segadj
  98. * mais cela en vaut-il vraiment la peine ? (qui peut le + peut le -)
  99. *
  100. SEGDES,MLMOTS
  101. IF (IPOS.LT.0) SEGDES,MLENT1
  102. IF (IPLISM.NE.0) SEGDES,MLMOT1
  103. *
  104. END
  105.  
  106.  
  107.  
  108.  
  109.  

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