eqpr
C EQPR SOURCE JC220346 18/12/04 21:15:22 9991 SUBROUTINE EQPR IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCNOYAU -INC SMLENTI -INC SMLREEL -INC SMLMOTS POINTEUR MINCO.MLMOTS -INC SMTABLE POINTEUR MTABX.MTABLE,KIZL.MTABLE,KIZS.MTABLE,KIZC.MTABLE -INC SMELEME PARAMETER (NBM=5) CHARACTER*8 LMOTS(NBM),NOM,MEQUA,NOMO,MTYP,MOQ(2) CHARACTER*(LONOM) NOMZ CHARACTER*8 TYPE,TYP2,TYPS,TYPC PARAMETER (NTB=2) CHARACTER*8 LTAB(NTB) DIMENSION KTAB(NTB) DATA LMOTS /'ZONE ','OPER ','KTYPI ','BETA ', & 'PIMP '/ DATA LTAB/'DOMAINE ','EQPR '/ C*** MMODEL=0 IF(TYPE.EQ.'MMODEL')THEN IF(MTBLE.EQ.0)RETURN KTAB(1)=MTBLE KTAB(2)=0 ELSEIF(TYPE.EQ.'TABLE')THEN TYPC=' ' IF(TYPC.EQ.'MOT ')THEN IF(TYPS.EQ.'DOMAINE')THEN KTAB(1)=MTBLE KTAB(2)=0 ELSEIF(TYPS.EQ.'EQPR')THEN KTAB(1)=0 KTAB(2)=MTBLE ELSE WRITE(IOIMP,*)' On attend une table soustype DOMAINE ou EQEX' RETURN ENDIF ENDIF ENDIF C??? C??? NTO=0 C??? CALL LITABS(LTAB,KTAB,NTB,NTO,IRET) C??? IF(IRET.EQ.0)THEN C??? WRITE(6,*)' On attend une table soustype DOMAINE ou EQPR' C??? RETURN C??? ENDIF IF(KTAB(1).NE.0.AND.KTAB(2).NE.0)THEN WRITE(6,*)' On ne peut donner simultanement les deux tables' RETURN ENDIF IF(KTAB(2).NE.0)THEN MTABLE=KTAB(2) SEGACT MTABLE MTYP='LISTMOTS' SEGACT MLMOT1 ELSEIF(KTAB(1).NE.0)THEN MTABD=KTAB(1) NEQUA=0 TYPE=' ' IF(TYPE.NE.'MAILLAGE')THEN ELSE ENDIF JGN=8 JGM=0 SEGINI MLMOT1 ELSE WRITE(6,*)' On attend une table ou un objet maillage' RETURN ENDIF 1 CONTINUE IF(IRET.EQ.0)GO TO 90 2 CONTINUE C write(6,*)' EQPR : nom=',nom IF(IP.EQ.0)THEN WRITE(6,*)'OPTION NON TROUVE DANS LA LISTE ->',LMOTS RETURN ENDIF GO TO (10,11,12,14,15),IP 10 CONTINUE C ON LIT LA ZONE MMODEL=0 IF(KTAB(1).EQ.0)THEN IF(IRET2.EQ.0)THEN WRITE(IOIMP,*)' On attend un objet TABLE DOMAINE ou MODELE' RETURN ENDIF IF(MTBLE.EQ.0)RETURN KTAB(1)=MTBLE ENDIF C??? IF(IRET.EQ.0)THEN C??? WRITE(6,*)' On attend un objet TABLE DOMAINE' C??? RETURN C??? ENDIF C write(6,*)' NOM de la zone ',NOMZ GO TO 1 11 CONTINUE IF(IRET.EQ.0)THEN WRITE(6,*)' ON ATTEND LE NOM DE L OPERATEUR' RETURN C write(6,*)' NOM de l opérateur ',NOM ENDIF * ECRITURE DU NOM DE L'OPERATEUR NOMO=NOM NEQUA=NEQUA+1 IF(NEQUA.LT.10)THEN WRITE(MEQUA,FMT='(I1,A7)')NEQUA,NOMO(1:7) ELSEIF(NEQUA.LT.100.AND.NEQUA.GE.10)THEN WRITE(MEQUA,FMT='(I2,A6)')NEQUA,NOMO(1:6) ELSE WRITE(6,*)'PLUS DE 99 OPERATEURS : CAS NON PREVU' RETURN ENDIF JGN=8 SEGADJ MLMOT1 * ECRITURE DE LA TABLE DE REFERENCE * ECRITURE DU NOM DE LA ZONE * ECRITURE DE MELEMZ * ECRITURE DE LA LISTE DES ARGUMENTS IARG=0 110 CONTINUE IF(IRET.EQ.0)GO TO 90 C write(6,*)' MTYP=',mtyp IF(MTYP.EQ.'MOT ')THEN C write(6,*)' NOM=',nom C write(6,*)' IP=',ip IF(IP.EQ.0)THEN IARG=IARG+1 NOMO=NOM WRITE(NOM,FMT='(A3,I1)')'ARG',IARG GO TO 111 ELSE GO TO 2 ENDIF ELSEIF(MTYP.EQ.'CHPOINT ')THEN IARG=IARG+1 WRITE(NOM,FMT='(A3,I1)')'ARG',IARG GO TO 111 ELSEIF(MTYP.EQ.'FLOTTANT')THEN IARG=IARG+1 WRITE(NOM,FMT='(A3,I1)')'ARG',IARG GO TO 111 ELSEIF(MTYP.EQ.'ENTIER ')THEN IARG=IARG+1 WRITE(NOM,FMT='(A3,I1)')'ARG',IARG XVAL=FLOAT(IENT) GO TO 111 ELSEIF(MTYP.EQ.'POINT ')THEN IARG=IARG+1 WRITE(NOM,FMT='(A3,I1)')'ARG',IARG GO TO 111 ELSE WRITE(6,*)' OBJET DE TYPE INDESIRE' WRITE(6,*)' ON ATTEND UN CHAMPOINT ou un FLOTTANT ' RETURN ENDIF 111 CONTINUE GO TO 1 12 CONTINUE IF(IRET.EQ.0.OR.IENT.GT.7) GOTO 90 IF(IENT.GT.1) THEN ENDIF GO TO 1 C BETA 14 CONTINUE TYP2='MAILLAGE' IF(IMAC.EQ.0)THEN WRITE(6,*)' EQPR : option MACRO absente de la table domaine ' RETURN ELSE IF(IRET.EQ.0)GOTO 90 ENDIF GO TO 1 C KPIMP 15 CONTINUE IF(IRET.EQ.0)GOTO 90 GO TO 1 90 CONTINUE SEGDES MTABLE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales