enlev9
C ENLEV9 SOURCE SP204843 24/09/05 21:15:02 12005 SUBROUTINE ENLEV9 (IPOINT,IEME,IPOIN3,IPOS) C*********************************************************************** C C E N L E V 9 C ----------- C C FONCTION: C --------- C C ENLEVER LE I-EME "OBJET" D'UN "LISTOBJE" C PARAMETRES: (E)=ENTREE (S)=SORTIE C ----------- C C IPOINT ENTIER (E) POINTEUR SUR LE "LISTOBJE" C IEME ENTIER (E) NUMERO D'ORDRE DE L'"OBJET" A ENLEVER DANS C LA SUITE DE TYPE "LISTOBJE" C IPOIN3 ENTIER (S) POINTEUR DU 'LISTOBJE' CREE C IPOS ENTIER (E) SI NEGATIF, IEME EST UN POINTEUR "LISTENTI" C C SOUS-PROGRAMMES APPELES: C ------------------------ C C ERREUR C C AUTEUR, DATE DE CREATION: C ------------------------- C C SERGE PASCAL 5 SEPTEMBRE 2024 C C LANGAGE: C -------- C C ESOPE + FORTRAN77 C C*********************************************************************** C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMLOBJE -INC SMLENTI C MLOBJE = IPOINT SEGACT,MLOBJE LDIM = LISOBJ(/1) C Y a-t-il plusieurs remplacements a faire ? IF (IPOS.LT.0) THEN MLENT1=IEME NBENLE=MLENT1.LECT(/1) IF (NBENLE .EQ. 0) THEN C Cas de la liste VIDE SEGINI,MLOBJ1=MLOBJE IPOIN3=MLOBJ1 RETURN ENDIF C Le LISTENTI est ordonne donc le min en 1 et le max en NBENLE IPOMIN=MLENT1.LECT(1) IPOMAX=MLENT1.LECT(NBENLE) IF (IPOMIN.LT.1 ) THEN C L'indice %i1 est au dela des bornes de la liste INTERR(1) = IPOMIN RETURN ELSEIF (IPOMAX.GT.LDIM) THEN C L'indice %i1 est au dela des bornes de la liste INTERR(1) = IPOMAX RETURN ENDIF ELSE NBENLE=1 IF (IEME.LT.1 .OR. IEME.GT.LDIM) THEN C L'indice %i1 est au dela des bornes de la liste INTERR(1) = IEME RETURN ENDIF ENDIF C NOBJ=LDIM - 1 SEGINI,MLOBJ1 MLOBJ1.TYPOBJ = MLOBJE.TYPOBJ C IENLE = 1 DO II=1,LDIM IF (IPOS.LT.0) IEME=MLENT1.LECT(IENLE) IF (II.EQ.IEME) THEN IENLE = IENLE + 1 IF (IENLE.GT.NBENLE) GOTO 10 ELSE MLOBJ1.LISOBJ(II-IENLE+1) = LISOBJ(II) ENDIF ENDDO 10 IF (IEME.LT.LDIM) THEN DO II=IEME+1,LDIM MLOBJ1.LISOBJ(II-NBENLE) = LISOBJ(II) ENDDO ENDIF C NOBJ=LDIM-NBENLE SEGADJ,MLOBJ1 IPOIN3=MLOBJ1 C SEGDES,MLOBJ1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales