enlev2
C ENLEV2 SOURCE CB215821 18/01/29 21:15:04 9715 C*********************************************************************** C C E N L E V 2 C ----------- C C FONCTION: C --------- C C ENLEVER LE I-EME ELEMENT D'UN OBJET DE TYPE "LISTENTI". C C PARAMETRES: (E)=ENTREE (S)=SORTIE C ----------- C C IEME ENTIER (E) NUMERO D'ORDRE DE L'ELEMENT A ENLEVER DANS C L'OBJET DE TYPE "LISTENTI". C IPOINT ENTIER (E) POINTEUR DE L'OBJET DE TYPE "LISTENTI". C IPOIN3 ENTIER (S) POINTEUR DU 'LISTENTI' 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 PASCAL MANIGOT 6 DECEMBRE 1984 C C LANGAGE: C -------- C C ESOPE + FORTRAN77 C C*********************************************************************** C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMLENTI C MLENTI = IPOINT SEGACT,MLENTI LDIM = LECT(/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,MLENT2=MLENTI IPOIN3=MLENT2 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 JG=LDIM - 1 SEGINI,MLENT2 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 MLENT2.LECT(II-IENLE+1) = LECT(II) ENDIF ENDDO 10 IF (IEME.LT.LDIM) THEN DO II=IEME+1,LDIM MLENT2.LECT(II-NBENLE) = LECT(II) ENDDO ENDIF C JG=LDIM-NBENLE SEGADJ,MLENT2 IPOIN3=MLENT2 SEGDES,MLENT2 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales