fuslob
C FUSLOB SOURCE SP204843 26/02/03 21:15:25 12461 C C ===================================================================== C = CE SUBROUTINE REALISE L OPERATION "ET" SUR LES 2 OBJETS = C = LISTOBJE MLOBJ1 ET MLOBJ2.LE RESULTAT EST RANGE DANS MLOBJE = C = = C ===================================================================== C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) CHARACTER*8 TYPOB1,TYPOB2 -INC PPARAM -INC CCOPTIO -INC SMLOBJE C CAS DES LISTES VIDES SEGACT,MLOBJ1 NOB1=MLOBJ1.LISOBJ(/1) NRE1=MLOBJ1.RLIREE(/1) N1=MAX(NOB1,NRE1) IF (N1.EQ.0) THEN MLOBJE = MLOBJ2 RETURN ENDIF SEGACT,MLOBJ2 NOB2=MLOBJ2.LISOBJ(/1) NRE2=MLOBJ2.RLIREE(/1) N2=MAX(NOB2,NRE2) IF (N2.EQ.0) THEN MLOBJE = MLOBJ1 RETURN ENDIF C TEST TYPE OBJETS DES DEUX LISTES NON VIDES TYPOB1 = MLOBJ1.TYPOBJ TYPOB2 = MLOBJ2.TYPOBJ IF (TYPOB1.NE.TYPOB2) THEN MOTERR(1:8)='LISTOBJE' RETURN ENDIF IK = 1 IF (NRE1.GT.0.OR.NRE2.GT.0) IK = 2 C CONCATENATION DES DEUX LISTES NOBJ = 0 NREE = 0 IF (IK.EQ.1) NOBJ=N1+N2 IF (IK.EQ.2) NREE=N1+N2 SEGINI,MLOBJE TYPOBJ = TYPOB1 DO 10 I=1,N1 IF (IK.EQ.1) LISOBJ(I)=MLOBJ1.LISOBJ(I) IF (IK.EQ.2) RLIREE(I)=MLOBJ1.RLIREE(I) 10 CONTINUE DO 20 J=1,N2 I=N1+J IF (IK.EQ.1) LISOBJ(I)=MLOBJ2.LISOBJ(J) IF (IK.EQ.2) RLIREE(I)=MLOBJ2.RLIREE(J) 20 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales