ordon3
C ORDON3 SOURCE PV 21/01/21 21:15:31 10862 ************************************************************************ * * O R D O N 3 * ----------- * * FONCTION: * --------- * * RANGER EN ORDRE CROISSANT OU DECROISSANT UN 'EVOLUTIO'. * * MODE D'APPEL: * ------------- * * CALL ORDON3 (IPEVOL,CROISS,ABSOLU) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPEVOL ENTIER (E) POINTEUR SUR L' EVOL A ORDONNER. * (S) MEME POINTEUR, EVOL REORDONNE . * CROISS LOGIQUE (E) INDIQUE PAR "VRAI" OU "FAUX" SI ON ORDONNE * CROISSANT OU NON. * ABSOLU LOGIQUE (E) INDIQUE PAR "VRAI" OU "FAUX" SI ON ORDONNE * EN CONSIDERANT LES VALEURS ABSOLUES OU LES * VRAIES VALEURS. * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) LOGICAL CROISS,ABSOLU,DECROI integer IB, IB1, ICO, IPEVOL integer IPILE, JB, NBPT, NC, NCOU, NRANG real*8 FXL1, XL1, XL2, YL1, YL2 -INC PPARAM -INC CCOPTIO -INC COCOLL -INC SMLREEL -INC SMEVOLL -INC TMCOLAC pointeur piles.LISPIL pointeur jcolac.ICOLAC pointeur jlisse.ILISSE pointeur jtlacc.ITLACC * iun=1 * DECROI = .NOT.CROISS MEVOLL=IPEVOL SEGACT MEVOLL*MOD NCOU=IEVOLL(/1) * * BOUCLE SUR LES DIFFERENTES COURBES * DO 400 NC=1,NCOU KEVOL1 = IEVOLL(NC) SEGINI,KEVOLL=KEVOL1 IEVOLL(NC)=KEVOLL SEGACT KEVOLL*MOD * * TEST SUR LE TYPE DES ABSCISSES ET DES ORDONNEES * IF(TYPX(1:8).NE.'LISTREEL'.OR.TYPY(1:8).NE.'LISTREEL') THEN SEGDES KEVOLL,MEVOLL RETURN ENDIF * MLREE1=IPROGX SEGINI,MLREEL=MLREE1 IPROGX=MLREEL * * TEST SUR LE NOMBRE DE POINTS * IF(NBPT.EQ.1) THEN SEGDES MLREEL SEGDES KEVOLL GO TO 400 ENDIF * MLREE3=IPROGY SEGINI,MLREE1=MLREE3 IPROGY=MLREE1 c SEGACT MLREE1*MOD DO 100 IB=2,NBPT IF(ABSOLU) THEN YL1 = ABS(XL1) ELSE YL1 = XL1 ENDIF IB1 = IB - 1 NRANG = IB DO 110 JB=IB1,1,-1 IF(ABSOLU) THEN YL2 = ABS(XL2) ELSE YL2 = XL2 ENDIF IF ( (CROISS .AND. YL1.LT.YL2) & .OR. (DECROI .AND. YL1.GT.YL2) ) THEN NRANG = NRANG - 1 ELSE GOTO 112 END IF 110 CONTINUE 112 CONTINUE DO 120 JB=IB1,NRANG,-1 120 CONTINUE 100 CONTINUE SEGDES KEVOLL,kevol1,MLREEL,MLREE1,mlree3 400 CONTINUE * SEGDES MEVOLL IF(IPSAUV.NE.0) THEN ICOLAC = IPSAUV SEGACT ICOLAC ILISSE=ILISSG SEGACT ILISSE*MOD ITLACC = KCOLA(ICO) SEGACT ITLACC*MOD SEGDES ICOLAC,ILISSE ENDIF C Suppression des piles d'objets communiques if(piComm.gt.0) then piles=piComm segact piles do ipile=1,piles.proc(/1) jcolac= piles.proc(ipile) if(jcolac.ne.0) then segact jcolac jlisse=jcolac.ilissg segact jlisse*mod jtlacc=jcolac.kcola(ico) segact jtlacc*mod segdes jtlacc segdes jlisse segdes jcolac endif enddo segdes piles endif RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales