Télécharger fuslob.eso

Retour à la liste

Numérotation des lignes :

fuslob
  1. C FUSLOB SOURCE SP204843 26/02/03 21:15:25 12461
  2. SUBROUTINE FUSLOB(MLOBJ1,MLOBJ2,MLOBJE)
  3. C
  4. C =====================================================================
  5. C = CE SUBROUTINE REALISE L OPERATION "ET" SUR LES 2 OBJETS =
  6. C = LISTOBJE MLOBJ1 ET MLOBJ2.LE RESULTAT EST RANGE DANS MLOBJE =
  7. C = =
  8. C =====================================================================
  9. C
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8(A-H,O-Z)
  12.  
  13. CHARACTER*8 TYPOB1,TYPOB2
  14.  
  15. -INC PPARAM
  16. -INC CCOPTIO
  17. -INC SMLOBJE
  18.  
  19. C CAS DES LISTES VIDES
  20. SEGACT,MLOBJ1
  21. NOB1=MLOBJ1.LISOBJ(/1)
  22. NRE1=MLOBJ1.RLIREE(/1)
  23. N1=MAX(NOB1,NRE1)
  24. IF (N1.EQ.0) THEN
  25. MLOBJE = MLOBJ2
  26. RETURN
  27. ENDIF
  28. SEGACT,MLOBJ2
  29. NOB2=MLOBJ2.LISOBJ(/1)
  30. NRE2=MLOBJ2.RLIREE(/1)
  31. N2=MAX(NOB2,NRE2)
  32. IF (N2.EQ.0) THEN
  33. MLOBJE = MLOBJ1
  34. RETURN
  35. ENDIF
  36.  
  37. C TEST TYPE OBJETS DES DEUX LISTES NON VIDES
  38. TYPOB1 = MLOBJ1.TYPOBJ
  39. TYPOB2 = MLOBJ2.TYPOBJ
  40. IF (TYPOB1.NE.TYPOB2) THEN
  41. MOTERR(1:8)='LISTOBJE'
  42. CALL ERREUR(83)
  43. RETURN
  44. ENDIF
  45. IK = 1
  46. IF (NRE1.GT.0.OR.NRE2.GT.0) IK = 2
  47.  
  48. C CONCATENATION DES DEUX LISTES
  49. NOBJ = 0
  50. NREE = 0
  51. IF (IK.EQ.1) NOBJ=N1+N2
  52. IF (IK.EQ.2) NREE=N1+N2
  53. SEGINI,MLOBJE
  54. TYPOBJ = TYPOB1
  55. DO 10 I=1,N1
  56. IF (IK.EQ.1) LISOBJ(I)=MLOBJ1.LISOBJ(I)
  57. IF (IK.EQ.2) RLIREE(I)=MLOBJ1.RLIREE(I)
  58. 10 CONTINUE
  59. DO 20 J=1,N2
  60. I=N1+J
  61. IF (IK.EQ.1) LISOBJ(I)=MLOBJ2.LISOBJ(J)
  62. IF (IK.EQ.2) RLIREE(I)=MLOBJ2.RLIREE(J)
  63. 20 CONTINUE
  64.  
  65. RETURN
  66. END
  67.  
  68.  
  69.  
  70.  
  71.  

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