Télécharger ega.eso

Retour à la liste

Numérotation des lignes :

ega
  1. C EGA SOURCE FANDEUR 22/06/02 21:15:04 11372
  2. SUBROUTINE EGA
  3.  
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6.  
  7. -INC PPARAM
  8. -INC CCOPTIO
  9. -INC CCREEL
  10.  
  11. -INC SMLENTI
  12. -INC SMTEXTE
  13.  
  14. EXTERNAL LONG
  15. CHARACTER*(8) ITTEMP,ITTEM2
  16. CHARACTER*(LOCHAI) CHAR1,CHAR2
  17. LOGICAL IRET,BOOL,BOOL1
  18. INTEGER I1,I2
  19. REAL*8 EPS1,X1,X2,XVAL
  20. C
  21. C TEST SUR LES TEXTES
  22. C
  23. CALL QUETYP(ITTEMP,0,IRETOU)
  24. MOTERR(1:8)=ITTEMP
  25. IF(IRETOU.EQ.0) THEN
  26. CALL ERREUR( 533)
  27. RETURN
  28. ENDIF
  29. IF(ITTEMP.EQ.'TEXTE ') GO TO 300
  30. IF(ITTEMP.EQ.'LOGIQUE ') GO TO 310
  31. IF(ITTEMP.EQ.'LISTENTI') GO TO 330
  32. IF(ITTEMP.EQ.'ENTIER ') GO TO 340
  33. IF(ITTEMP.EQ.'MOT ') GO TO 350
  34. IF(ITTEMP.EQ.'FLOTTANT') GO TO 360
  35. * comparaison bête des 2 objets
  36. iret=.true.
  37. ittemp=' '
  38. ittem2=' '
  39. call lirobj(ittemp,iv1,1,iretou)
  40. call lirobj(ittem2,iv2,1,iretou)
  41. if (ierr.ne.0) return
  42. if (ittemp.ne.ittem2) iret=.false.
  43. if (iv1.ne.iv2) iret=.false.
  44. GO TO 100
  45. 300 CONTINUE
  46. IRET=.FALSE.
  47. CALL LIROBJ(ITTEMP,ITEX1,0,IRETOU)
  48. CALL LIROBJ(ITTEMP,ITEX2,0,IRETOU)
  49. IF (IERR.NE.0) RETURN
  50. IF(IRETOU.EQ.1) THEN
  51. MTEXTE=ITEX1
  52. MTEXT1=ITEX2
  53. SEGACT MTEXTE,MTEXT1
  54. NCA1=NCART
  55. NCA2=MTEXT1.NCART
  56. IF(NCA1.NE.NCA2) GO TO 221
  57. DO I=1,NCA1
  58. IF (MTEXT(I:I).NE.MTEXT1.MTEXT(I:I)) GO TO 221
  59. ENDDO
  60. IRET=.TRUE.
  61. 221 SEGDES MTEXTE,MTEXT1
  62. ELSE
  63. ITTEMP=' '
  64. CALL LIROBJ(ITTEMP,KIKI,0,IRETOU)
  65. IF(IRETOU.EQ.0) GO TO 5000
  66. ENDIF
  67. GO TO 100
  68. 310 CONTINUE
  69. C TEST SUR BOOLEENS
  70. IRET=.FALSE.
  71. CALL LIRLOG(BOOL ,1,IRETOU)
  72. CALL LIRLOG(BOOL1,0,IRETOU)
  73. IF (IERR.NE.0) RETURN
  74. IF(IRETOU.EQ.1) THEN
  75. IRET= BOOL.EQV.BOOL1
  76. ELSE
  77. ITTEMP=' '
  78. CALL LIROBJ( ITTEMP,KIKI,0,IRETOU)
  79. IF(IRETOU.EQ.0) GO TO 5000
  80. ENDIF
  81. GO TO 100
  82. 330 CONTINUE
  83. C TEST SUR LISTENTI
  84. IRET=.FALSE.
  85. CALL LIROBJ(ITTEMP,MLENTI,1,IRETOU)
  86. CALL LIROBJ(ITTEMP,MLENT1,0,IRETOU)
  87. IF (IERR.NE.0) RETURN
  88. IF(IRETOU.EQ.1) THEN
  89. SEGACT MLENTI,MLENT1
  90. IF(LECT(/1).NE.MLENT1.LECT(/1)) GO TO 102
  91. DO I=1,LECT(/1)
  92. IF(LECT(I).NE.MLENT1.LECT(I)) GO TO 102
  93. ENDDO
  94. IRET=.TRUE.
  95. 102 CONTINUE
  96. SEGDES MLENTI,MLENT1
  97. ELSE
  98. ITTEMP=' '
  99. CALL LIROBJ( ITTEMP,KIKI,0,IRETOU)
  100. IF(IRETOU.EQ.0) GO TO 5000
  101. ENDIF
  102. GO TO 100
  103. 340 CONTINUE
  104. C TEST SUR ENTIERS
  105. IRET=.FALSE.
  106. CALL LIRENT(I1,1,IRETOU)
  107. CALL LIRENT(I2,0,IRETOU)
  108. IF (IERR.NE.0) RETURN
  109. IF(IRETOU.EQ.1) THEN
  110. IRET= I1.EQ.I2
  111. ELSE
  112. ITTEMP=' '
  113. CALL LIROBJ( ITTEMP,KIKI,0,IRETOU)
  114. IF(IRETOU.EQ.0) GO TO 5000
  115. ENDIF
  116. GO TO 100
  117. 360 CONTINUE
  118. C TEST SUR FLOTTANTS
  119. IRET=.FALSE.
  120. CALL LIRREE(X1,1,IRETOU)
  121. CALL LIRREE(X2,0,IRETOU)
  122. IF (IERR.NE.0) RETURN
  123. IF(IRETOU.EQ.1) THEN
  124. CALL LIRREE(EPS1,0,IRETO3)
  125. IF(IRETO3.EQ.1) THEN
  126. *
  127. * MILL 9/1/91 TEST EN VALEUR ABSOLUE
  128. *
  129. XVAL = ABS (X2 - X1)
  130. IRET= XVAL.LE.EPS1
  131. ELSE
  132. IRET= A_EGALE_B(X1,X2)
  133. ENDIF
  134. ELSE
  135. ITTEMP=' '
  136. CALL LIROBJ( ITTEMP,KIKI,0,IRETOU)
  137. IF(IRETOU.EQ.0) GO TO 5000
  138. ENDIF
  139. GO TO 100
  140. 350 CONTINUE
  141. C TEST SUR MOT
  142. IRET=.FALSE.
  143. CALL LIRCHA(CHAR1,1,IRET1)
  144. CALL LIRCHA(CHAR2,0,IRET2)
  145. IF (IERR.NE.0) RETURN
  146. IF(IRET2.NE.0) THEN
  147. CALL LIRENT(LL0,0,IRET3)
  148. IF (IRET3.NE.0) THEN
  149. IF (LL0.GT.LOCHAI) THEN
  150. INTERR = LL0
  151. CALL ERREUR(36)
  152. RETURN
  153. ENDIF
  154. IRET= CHAR1(1:LL0).EQ.CHAR2(1:LL0)
  155. ELSE
  156. IF( CHAR1.EQ.CHAR2) THEN
  157. IRET=.TRUE.
  158. ELSE
  159. LL1=LONG(CHAR1)
  160. LL2=LONG(CHAR2)
  161. IRET= CHAR1(1:LL1).EQ.CHAR2(1:LL2)
  162. ENDIF
  163. ENDIF
  164. ELSE
  165. ITTEMP=' '
  166. CALL LIROBJ( ITTEMP,KIKI,0,IRETOU)
  167. IF(IRETOU.EQ.0) GO TO 5000
  168. ENDIF
  169. GO TO 100
  170. 100 CONTINUE
  171. CALL ECRLOG (IRET)
  172. RETURN
  173. 5000 CONTINUE
  174. CALL ERREUR(533)
  175. RETURN
  176. END
  177.  
  178.  
  179.  

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