borner
C BORNER SOURCE CB215821 21/03/03 21:15:01 10910 ************************************************************************ * * * OPERATEUR BORN(ER) * * * ************************************************************************ SUBROUTINE BORNER IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLMOTS -INC SMLENTI -INC SMLREEL -INC SMCHPOI -INC SMCHAML PARAMETER (NMOT = 3) CHARACTER*(4) LMOT(NMOT) CHARACTER*(LOCOMP) MOTC DATA LMOT / 'MAXI','MINI','COMP' / IPOBJ = 0 ITOBJ = 0 * === * 1 - Lecture de l'objet a borner * === * LISTENTI 1 CONTINUE IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 2 MLENTI=IPOBJ SEGACT,MLENTI ITOBJ = 1 GOTO 100 * LISTREEL 2 CONTINUE IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 3 MLREEL=IPOBJ SEGACT,MLREEL ITOBJ = 2 GOTO 100 * EVOLUTION 3 CONTINUE IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 4 ITOBJ = 3 GOTO 100 * CHPOINT 4 CONTINUE IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 5 C Pour l'instant erreur pour les objets vides MOTERR='CHPOINT' INTERR= IPOBJ RETURN ENDIF ITOBJ = 4 GOTO 100 * MCHAML 5 CONTINUE IF (IERR.NE.0) RETURN IF (IRETOU.EQ.0) GOTO 6 C Pour l'instant erreur pour les objets vides MOTERR='MCHAML' INTERR= IPOBJ RETURN ENDIF ITOBJ = 5 GOTO 100 * TYPE NON RECONNU ACTUELLEMENT 6 CONTINUE IF (IRETOU.EQ.0) THEN ELSE 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 IF (ITOBJ.EQ.3) THEN JG = 10 SEGINI,MLENTI C* ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN ELSE C Cas des CHPOINTS et MCHAMLS JGN = LOCOMP JG = NBCO JGM = JG SEGINI,MLMOTS ENDIF SEGINI,MLENT1,MLREE1,MLREE2 ENDIF * ICOMP = 0 ILCOND = 1 110 CONTINUE IF (ITOBJ.EQ.3) THEN 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 ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN C Cas des CHPOINTS et MCHAMLS C Lecture optionnelle du nom de la composante IF (IERR .NE.0) GOTO 900 IF (IRETOU.EQ.0) THEN C On n'a plus rien a lire normalement on va faire le travail GOTO 200 ELSE IF(IMOT .NE. 0)THEN C On n'a pas lu de nom de composante mais le mot cle suivant ==> REFUS CALL REFUS C On prend la seule composante du CHAMP sans poser de question IF (ITOBJ.EQ.4)THEN C Cas des CHPOINTS MCHPOI=IPOBJ MSOUPO=MCHPOI.IPCHP(1) MOTC =MSOUPO.NOCOMP(1) ELSEIF(ITOBJ.EQ.5)THEN C Cas des MCHAMLS MCHELM=IPOBJ MCHAML=MCHELM.ICHAML(1) MOTC =MCHAML.NOMCHE(1) ELSE ENDIF ELSE C On demande quelle composante==> ERREUR RETURN ENDIF ENDIF ENDIF ICOMP = ICOMP + 1 IF (ITOBJ.EQ.4)THEN C Cas des CHPOINTS MOTERR='CHPOINT' ELSEIF(ITOBJ.EQ.5)THEN C Cas des MCHAMLS MOTERR='MCHAML' ELSE ENDIF RETURN ENDIF ENDIF IF (IERR.NE.0) GOTO 900 IF (ITOBJ.EQ.1) THEN IMIN = 0 IF (IERR.NE.0) GOTO 900 IF (IMOT.EQ.1) THEN IMAX = I1 ELSEIF(IMOT.EQ.2) THEN IMIN = I1 ELSEIF(IMOT.EQ.3) THEN IMIN = I1 IF (IERR.NE.0) GOTO 900 IMIN = IMAX IMAX = I1 ENDIF ELSE ENDIF ELSE XMIN = 0. XMAX = 0. IF (IERR.NE.0) GOTO 900 IF (IMOT.EQ.1) THEN XMAX = X1 ELSEIF(IMOT.EQ.2) THEN XMIN = X1 ELSEIF(IMOT.EQ.3) THEN XMIN = X1 IF (IERR.NE.0) GOTO 900 IF (XMAX.LT.XMIN) THEN XMIN = XMAX XMAX = X1 ENDIF ELSE ENDIF ENDIF IF (ITOBJ.EQ.3 .OR. ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN MLENT1.LECT(ICOMP) = IMOT 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 ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN JGM = JG SEGADJ,MLMOTS ELSE ENDIF ENDIF ENDIF IF (ITOBJ .EQ. 1) THEN ELSEIF(ITOBJ .EQ. 2) THEN ELSEIF(ITOBJ .EQ. 3) THEN ELSEIF(ITOBJ .EQ. 4) THEN IF (IPRES.NE.0) THEN ENDIF ELSEIF(ITOBJ .EQ. 5) THEN IF (IPRES.NE.0) THEN ENDIF ELSE 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 ELSEIF(ITOBJ.EQ.4 .OR. ITOBJ.EQ.5) THEN SEGSUP,MLMOTS ENDIF SEGSUP,MLENT1,MLREE1,MLREE2 ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales