enlev1
C ENLEV1 SOURCE CB215821 19/07/30 21:15:55 10273 C*********************************************************************** C C E N L E V 1 C ----------- C C FONCTION: C --------- C C ENLEVER LE I-EME ELEMENT D'UN OBJET DE TYPE "LISTREEL". 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 "LISTREEL". C IPOINT ENTIER (E) POINTEUR DE L'OBJET DE TYPE "LISTREEL". C IPOIN3 ENTIER (S) POINTEUR DU 'LISTREEL' 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 SMLREEL -INC SMLENTI C MLREEL = IPOINT SEGACT,MLREEL 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,MLREE1=MLREEL IPOIN3=MLREE1 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,MLREE1 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 ENDIF ENDDO 10 IF (IEME.LT.LDIM) THEN DO II=IEME+1,LDIM ENDDO ENDIF C JG=LDIM-NBENLE SEGADJ,MLREE1 IPOIN3=MLREE1 SEGDES,MLREE1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales