Télécharger rempla.eso

Retour à la liste

Numérotation des lignes :

rempla
  1. C REMPLA SOURCE FD218221 26/09/21 21:15:19 12650
  2. SUBROUTINE REMPLA
  3. ************************************************************************
  4. *
  5. * R E M P L A
  6. * -----------
  7. *
  8. * SOUS-PROGRAMME ASSOCIE A LA DIRECTIVE "REMPLACER"
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * REMPLACER UN ELEMENT D'UN OBJET (QUAND CELA A UN SENS).
  14. *
  15. * PHRASE D'APPEL (EN GIBIANE):
  16. * ----------------------------
  17. *
  18. * REMPLACER OBJET RANG ELEM ;
  19. *
  20. * OPERANDES:
  21. * ----------
  22. *
  23. * OBJET TYPE1 OBJET DONT ON REMPLACE UN ELEMENT.
  24. * RANG TYPE2 INDICE DE POSITION DE L'ELEMENT A REMPLACER
  25. * DE L'OBJET "OBJET".
  26. * ELEM TYPE3 OBJET REMPLACANT.
  27. *
  28. * SI TYPE1 = ... ALORS, TYPE2 = ... ET TYPE3 = ...
  29. * LISTREEL ENTIER FLOTTANT
  30. * LISTENTI ENTIER ENTIER
  31. * LISTMOTS ENTIER MOT
  32. * LISTCHPO ENTIER CHPOINT
  33. * LISTOBJE ENTIER OBJET
  34. *
  35. * MODE DE FONCTIONNEMENT:
  36. * -----------------------
  37. *
  38. * APPEL D'UN SOUS-PROGRAMME DISTINCT SELON LE TYPE DE L'OBJET
  39. * "OBJET".
  40. *
  41. * IPLIS1 CONTIENT UNE LISTE DE VALEURS DE REMPLACEMENT, SI FOURNIE
  42. * SINON, IPLIS3 VAUT ZERO
  43. *
  44. * IPOIN2 CONTIENT LA LISTE DES INDICES A REMPLACER, SI IPOS<0
  45. * SINON, IPOIN2 CONTIENT UN SEUL INDICE
  46. *
  47. * SOUS-PROGRAMMES APPELES:
  48. * ------------------------
  49. *
  50. * ERREUR, LIRE01, REMPL1, REMPL2, REMPL3, REMPL4, REMPL5, REMPL6
  51. *
  52. * AUTEUR, DATE DE CREATION:
  53. * -------------------------
  54. *
  55. * PASCAL MANIGOT 5 DECEMBRE 1984
  56. * MODIF LE 22 JANVIER 1988
  57. * LANGAGE:
  58. * --------
  59. *
  60. * FORTRAN77
  61. *
  62. ************************************************************************
  63. *
  64. IMPLICIT INTEGER(I-N)
  65. -INC PPARAM
  66. -INC CCOPTIO
  67. -INC SMLOBJE
  68. *
  69. REAL*8 REELDP
  70. CHARACTER*(LOCHAI) LEMOT
  71. CHARACTER*8 CTYP
  72. *
  73. * CAS PARTICULIER DU REMPLACEMENT DANS UN MOT
  74. * => LE/LES INDICES NE SONT PAS DES ENTIERS
  75. * => REMPLACER EST UN OPERATEUR PLUTOT QU'UNE DIRECTIVE
  76. CALL QUETYP(CTYP,0,IRETOU)
  77. IF (IRETOU.EQ.0) THEN
  78. CALL ERREUR(533)
  79. RETURN
  80. ENDIF
  81. IF (CTYP.EQ.'MOT') THEN
  82. * REMPL5 LIT LES ARGUMENTS ET ECRIT LE RESULTAT DANS LA PILE
  83. CALL REMPL5
  84. RETURN
  85. ENDIF
  86. *
  87. * ================================================================
  88. *
  89. * IPOS<>0 => on autorise IPOIN2 a contenir un LISTENTI
  90. IPOS=1
  91.  
  92. CALL LIRE01(IPOIN1,IPOS,IPOIN2)
  93. IF (IERR.NE.0) RETURN
  94. *
  95. ICODE=1
  96. IF (IPOS.LT.0) ICODE=0
  97. IPLIS1=0
  98. *
  99. * REMPLACEMENT(S) DANS UN LISTREEL
  100. IF (IABS(IPOS).EQ.1) THEN
  101. CALL LIRREE(REELDP,ICODE,IRETOU)
  102. IF (IERR.NE.0) RETURN
  103. IF (IRETOU.EQ.0) THEN
  104. CALL LIROBJ('LISTREEL',IPLIS1,1,IRETOU)
  105. IF (IERR.NE.0) RETURN
  106. ENDIF
  107. CALL REMPL1(IPOIN1,IPOIN2,REELDP,IPLIS1,IPOS)
  108. *
  109. * REMPLACEMENT(S) DANS UN LISTENTI
  110. ELSEIF (IABS(IPOS).EQ.2) THEN
  111. CALL LIRENT(IPOIN3,ICODE,IRETOU)
  112. IF (IERR.NE.0) RETURN
  113. IF (IRETOU.EQ.0) THEN
  114. CALL LIROBJ('LISTENTI',IPLIS1,1,IRETOU)
  115. IF (IERR.NE.0) RETURN
  116. ENDIF
  117. CALL REMPL2(IPOIN1,IPOIN2,IPOIN3,IPLIS1,IPOS)
  118. *
  119. * REMPLACEMENT(S) DANS UN LISTMOTS
  120. ELSEIF (IABS(IPOS).EQ.3) THEN
  121. CALL LIRCHA(LEMOT,ICODE,IRETOU)
  122. IF (IERR.NE.0) RETURN
  123. IF (IRETOU.EQ.0) THEN
  124. CALL LIROBJ('LISTMOTS',IPLIS1,1,IRETOU)
  125. IF (IERR.NE.0) RETURN
  126. ENDIF
  127. CALL REMPL3(IPOIN1,IPOIN2,LEMOT,IPLIS1,IPOS)
  128. *
  129. * REMPLACEMENT(S) DANS UN LISTCHPO
  130. ELSEIF (IABS(IPOS).EQ.4) THEN
  131. CALL LIROBJ('CHPOINT',IPOIN3,ICODE,IRETOU)
  132. IF (IERR.NE.0) RETURN
  133. IF (IRETOU.EQ.0) THEN
  134. CALL LIROBJ('LISTCHPO',IPLIS1,1,IRETOU)
  135. IF (IERR.NE.0) RETURN
  136. ENDIF
  137. CALL REMPL4(IPOIN1,IPOIN2,IPOIN3,IPLIS1,IPOS)
  138. *
  139. * REMPLACEMENT(S) DANS UN LISTOBJE
  140. ELSEIF (IABS(IPOS).EQ.5) THEN
  141. MLOBJE=IPOIN1
  142. SEGACT,MLOBJE
  143. IF (TYPOBJ.EQ.'FLOTTANT') THEN
  144. CALL LIRREE(REELDP,ICODE,IRETOU)
  145. ELSE
  146. CALL LIROBJ(TYPOBJ,IPOIN3,ICODE,IRETOU)
  147. ENDIF
  148. IF (IERR.NE.0) RETURN
  149. IF (IRETOU.EQ.0) THEN
  150. CALL LIROBJ('LISTOBJE',IPLIS1,1,IRETOU)
  151. IF (IERR.NE.0) RETURN
  152. ENDIF
  153. CALL REMPL6(IPOIN1,IPOIN2,IPOIN3,IPLIS1,REELDP,IPOS)
  154. *
  155. * ERREUR (ARGUMENT DE TYPE INCOMPATIBLE)
  156. ELSEIF (IPOS.NE.0) THEN
  157. CALL ERREUR(196)
  158. ENDIF
  159. *
  160. END
  161.  
  162.  

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