enlev3
C ENLEV3 SOURCE CB215821 18/01/29 21:15:05 9715 C*********************************************************************** C C E N L E V 3 C ----------- C C FONCTION: C --------- C C ENLEVER LE I-EME ELEMENT D'UN OBJET DE TYPE "LISTMOTS". 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 "LISTMOTS". C IPOINT ENTIER (E) POINTEUR DE L'OBJET DE TYPE "LISTMOTS". C IPOIN3 ENTIER (S) POINTEUR DU 'LISTMOTS' 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 + EXTENSION: CARACTERES MIS DANS DES ENTIERS C C*********************************************************************** C IMPLICIT INTEGER(I-N) -INC PPARAM -INC CCOPTIO -INC SMLMOTS -INC SMLENTI C MLMOTS = IPOINT SEGACT,MLMOTS 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,MLMOT1=MLMOTS IPOIN3=MLMOT1 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 JGM=LDIM - 1 SEGINI,MLMOT1 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 JGM=LDIM-NBENLE SEGADJ,MLMOT1 IPOIN3=MLMOT1 SEGDES,MLMOT1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales