C AJOUN SOURCE PV 13/04/11 21:15:01 7755 SUBROUTINE AJOUN(ITAB,IEL,ILISSE,NUMLIS) C C C AJOUTE UN ELEMENT (de valeur iel) DANS UN SEGMENT EXTENSIBLE C S IL N Y EST DEJA. C et renseigne le segment ilisse pour aller plus vite C numlis est le numero de la pile C RENVOIE DANS IEL LA PLACE DE L OBJET C C IMPLICIT INTEGER(I-N) -INC CCOPTIO -INC TMCOLAC SEGMENT ITAB(0) NLISSE = ILISEG(/1) IF(NUMLIS.EQ.1) THEN IF((IEL-1)/npgcd.GT.NLISSE) THEN NLISSE = (IEL-1)/npgcd*1.2 SEGADJ ILISSE ENDIF NLIS= ILISEG((IEL-1)/npgcd) IF(NLIS.EQ.0) THEN ITAB(**)=IEL ILISEG((IEL-1)/npgcd)=ITAB(/1) IEL=ILISEG((IEL-1)/npgcd) ELSE * verif que c'est la bonne pile if (itab(nlis).ne.iel) then moterr(1:8)='ajoun' interr(1)=iel call erreur(861) write (6,*) ' incoherence ajoun ',itab,iel,nlis,nlisse,numlis, > itab(nlis) L=itab(/1) DO I=1,L IF(ITAB(I).EQ.IEL) GOTO 12 enddo ITAB(**)=IEL I=L+1 12 CONTINUE nlis=I endif IEL=NLIS ENDIF ELSE L=ITAB(/1) DO 1 I=1,L IF(ITAB(I).EQ.IEL) GOTO 2 1 CONTINUE ITAB(**)=IEL I=L+1 2 CONTINUE IEL=I ENDIF RETURN END * anciemme programmation * L=ITAB(/1) * DO 1 I=1,L * IF(ITAB(I).EQ.IEL) GOTO 2 * 1 CONTINUE * ITAB(**)=IEL * I=L+1 * 2 CONTINUE * IEL=I * RETURN * END