C BORNER SOURCE FANDEUR 10/12/15 21:15:20 6808 ************************************************************************ * * * OPERATEUR BORN(ER) * * * ************************************************************************ SUBROUTINE BORNER IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC CCOPTIO -INC SMLMOTS -INC SMLENTI -INC SMLREEL PARAMETER (NMOT = 3) CHARACTER*4 LMOT(NMOT) CHARACTER*16 MOTC DATA LMOT / 'MAXI','MINI','COMP' / IPOBJ = 0 ITOBJ = 0 * === * 1 - Lecture de l'objet a borner * === * LISTENTI 1 CONTINUE CALL LIROBJ('LISTENTI',IPOBJ,0,IRETOU) IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 2 ITOBJ = 1 GOTO 100 * LISTREEL 2 CONTINUE CALL LIROBJ('LISTREEL',IPOBJ,0,IRETOU) IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 3 ITOBJ = 2 GOTO 100 * EVOLUTION 3 CONTINUE CALL LIROBJ('EVOLUTIO',IPOBJ,0,IRETOU) IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 4 ITOBJ = 3 GOTO 100 * CHPOINT 4 CONTINUE CALL LIROBJ('CHPOINT ',IPOBJ,0,IRETOU) IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 5 ITOBJ = 4 GOTO 100 * MCHAML 5 CONTINUE CALL LIROBJ('MCHAML ',IPOBJ,0,IRETOU) IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 6 ITOBJ = 5 GOTO 100 * TYPE NON RECONNU ACTUELLEMENT 6 CONTINUE CALL QUETYP(MOTERR(1:8),0,IRETOU) IF (IRETOU.EQ.0) THEN CALL ERREUR(533) ELSE CALL ERREUR(39) ENDIF RETURN C* GOTO 100 * === * 2 - Lecture de l'operation a realiser et la(les) borne(s) associee(s) * === 100 CONTINUE * Quelques initialisations IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN JG = 10 IF (ITOBJ.EQ.3) THEN SEGINI,MLENTI C* ELSE IF (ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN ELSE JGN = 4 JGM = JG SEGINI,MLMOTS ENDIF SEGINI,MLENT1 SEGINI,MLREE1,MLREE2 ENDIF * ICOMP = 0 ILCOND = 1 110 CONTINUE IF (ITOBJ.EQ.3) THEN CALL LIRENT(I1,ILCOND,IRETOU) IF (IERR.NE.0) GOTO 900 IF (IRETOU.EQ.0) GOTO 200 ICOMP = ICOMP + 1 IF (ICOMP.GT.JG) THEN JG = JG + 10 SEGADJ,MLENTI,MLENT1 SEGADJ,MLREE1,MLREE2 ENDIF LECT(ICOMP) = I1 ELSE IF (ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN CALL LIRCHA(MOTC,ILCOND,IRETOU) IF (IERR.NE.0) GOTO 900 IF (IRETOU.EQ.0) GOTO 200 ICOMP = ICOMP + 1 IF (ICOMP.GT.JG) THEN JG = JG + 10 JGM = JG SEGADJ,MLMOTS SEGADJ,MLENT1 SEGADJ,MLREE1,MLREE2 ENDIF MOTS(ICOMP) = MOTC(1:4) ENDIF CALL LIRMOT(LMOT,NMOT,IMOT,1) IF (IERR.NE.0) GOTO 900 IF (ITOBJ.EQ.1) THEN IMIN = 0 IMAX = 0 CALL LIRENT(I1,1,IRETOU) IF (IERR.NE.0) GOTO 900 IF (IMOT.EQ.1) THEN IMAX = I1 ELSE IF (IMOT.EQ.2) THEN IMIN = I1 C* ELSE IF (IMOT.EQ.3) THEN ELSE IMIN = I1 CALL LIRENT(IMAX,1,IRETOU) IF (IERR.NE.0) GOTO 900 IF (IMAX.LT.IMIN) THEN IMIN = IMAX IMAX = I1 ENDIF ENDIF ELSE XMIN = 0. XMAX = 0. CALL LIRREE(X1,1,IRETOU) IF (IERR.NE.0) GOTO 900 IF (IMOT.EQ.1) THEN XMAX = X1 ELSE IF (IMOT.EQ.2) THEN XMIN = X1 C* ELSE IF (IMOT.EQ.3) THEN ELSE XMIN = X1 CALL LIRREE(XMAX,1,IRETOU) IF (IERR.NE.0) GOTO 900 IF (XMAX.LT.XMIN) THEN XMIN = XMAX XMAX = X1 ENDIF ENDIF ENDIF IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN MLENT1.LECT(ICOMP) = IMOT MLREE1.PROG(ICOMP) = XMIN MLREE2.PROG(ICOMP) = XMAX ILCOND = 0 GOTO 110 ENDIF * === * 3 - Realisation des operations demandees * === 200 CONTINUE IPRES = 0 IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN IF (ICOMP.NE.JG) THEN JG = ICOMP SEGADJ,MLENT1 SEGADJ,MLREE1,MLREE2 IF (ITOBJ.EQ.3) THEN SEGADJ,MLENTI C* ELSE IF (ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN ELSE JGM = JG SEGADJ,MLMOTS ENDIF ENDIF ENDIF IF (ITOBJ .EQ. 1) THEN CALL BORNE1(IPOBJ,IMOT,IMIN,IMAX,IPRES) IF (IPRES.NE.0) CALL ECROBJ('LISTENTI',IPRES) ELSE IF (ITOBJ .EQ. 2) THEN CALL BORNE2(IPOBJ,IMOT,XMIN,XMAX,IPRES) IF (IPRES.NE.0) CALL ECROBJ('LISTREEL',IPRES) ELSE IF (ITOBJ .EQ. 3) THEN CALL BORNE3(IPOBJ,MLENTI,MLENT1,MLREE1,MLREE2,IPRES) IF (IPRES.NE.0) CALL ECROBJ('EVOLUTIO',IPRES) ELSE IF (ITOBJ .EQ. 4) THEN CALL BORNE4(IPOBJ,MLMOTS,MLENT1,MLREE1,MLREE2,IPRES) IF (IPRES.NE.0) CALL ECROBJ('CHPOINT ',IPRES) C* ELSE IF (ITOBJ .EQ. 5) THEN ELSE CALL BORNE5(IPOBJ,MLMOTS,MLENT1,MLREE1,MLREE2,IPRES) IF (IPRES.NE.0) CALL ECROBJ('MCHAML ',IPRES) ENDIF * === * 4 - Menage des objets temporaires * === 900 CONTINUE IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN IF (ITOBJ.EQ.3) THEN SEGSUP,MLENTI C* ELSE IF (ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN ELSE SEGSUP,MLMOTS ENDIF SEGSUP,MLENT1,MLREE1,MLREE2 ENDIF RETURN END