C ECCHAR SOURCE CHAT 05/01/12 23:20:31 5004 SUBROUTINE ECCHAR(MCHARG,jentet) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C =================================================================== C = ECRITURE D'UN OBJET CHARGEMENT = C = = C = CREATION : 15/10/85 = C = PROGRAMMEUR : GUILBAUD = C = EXTENSION : 11/97 = C = PROGRAMMEUR : KICHENIN = C =================================================================== -INC SMCHARG -INC SMLREEL -INC CCOPTIO -INC SMCOORD SEGACT MCHARG NCHAR=KCHARG(/1) INTERR(1)=MCHARG INTERR(2)=NCHAR * CHARGEMENT de pointeur %i1 qui contient %i2 chargement(s) élémentaire(s) WRITE(6,*) ' ' CALL ERREUR(-111) WRITE(6,*) ' ' DO 100 N=1,NCHAR ICHARG=KCHARG(N) SEGACT ICHARG IF((CHATYP.EQ.'CHPOINT ').OR.(CHATYP.EQ.'MCHAML ')) THEN INTERR(1)=N MOTERR(1:4) = CHANOM(N) MOTERR(5:8) = CHALIE(N) MOTERR(9:12) = CHAMOB(N) * Chargement élémentaire %i1 : nom %m1:4 , nature %m5:8, deplacement %m9:12 * Description spatiale : CALL ERREUR(-112) IF(CHATYP.EQ.'CHPOINT ') THEN IBICHP=ICHPO1 CALL ECCHPO(IBICHP,jentet) ELSEIF(CHATYP.EQ.'MCHAML ') THEN IBICHP=ICHPO1 CALL ZPCHEL(IBICHP,jentet) ENDIF * Description temporelle : CALL ERREUR(-113) WRITE(6,*) ' ' MLREEL=ICHPO2 SEGACT MLREEL N1=PROG(/1) INTERR(1)=N1 INTERR(2)=MLREEL * Listreel des temps de pointeur %i2 qui contient les %i1 temps suivant : CALL ERREUR(-114) if(jentet.eq.1) n1 = min (n1,10) IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1) 5 FORMAT(5X,10(1X,1PE12.5)) SEGDES MLREEL MLREEL=ICHPO3 SEGACT MLREEL N1=PROG(/1) INTERR(1)=MLREEL INTERR(2)=N1 * Listreel de la fonction de pointeur %i1 qui contient les %i2 valeurs : WRITE(6,*) ' ' CALL ERREUR(-115) if(jentet.eq.1) n1 = min (n1,10) IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1) WRITE(6,*) ' ' SEGDES MLREEL ELSEIF (CHATYP.EQ.'TABLE ') THEN INTERR(1)=N MOTERR(1:4) = CHANOM(N) MOTERR(5:8) = CHALIE(N) MOTERR(9:12) = CHAMOB(N) * Chargement élémentaire %i1 : nom %m1:4 , nature %m5:8, deplacement %m9:12 * Première table : CALL ERREUR(-294) WRITE(6,*) ' ' IBITAB = ICHPO1 CALL ECTABL(IBITAB) * Deuxième table : WRITE(6,*) ' ' CALL ERREUR(-295) WRITE(6,*) ' ' IBITAB = ICHPO2 CALL ECTABL(IBITAB) WRITE(6,*) ' ' ENDIF c------------------ description du deplacement optionnel ------------- * Deplacement de type %m1:11 defini par IF (CHAMOB(N).EQ.'TRAN'.OR.CHAMOB(N).EQ.'ROTA' & .OR.CHAMOB(N).EQ.'TRAJ') THEN IF (CHAMOB(N).EQ.'TRAN') MOTERR(1:11) = 'TRANSLATION' IF (CHAMOB(N).EQ.'ROTA') MOTERR(1:11) = 'ROTATION ' IF (CHAMOB(N).EQ.'TRAJ') MOTERR(1:11) = 'TRAJECTOIRE' CALL ERREUR(-323) WRITE(6,*) ' ' IF ((CHAMOB(N).EQ.'TRAN').OR.(CHAMOB(N).EQ.'ROTA')) THEN * LISTE D'UN POINT SEGACT MCOORD IB=ICHPO4 ID=(IDIM+1)*(IB-1) INTERR(1)=IB REAERR(1)=XCOOR(ID+1) REAERR(2)=XCOOR(ID+2) REAERR(3)=XCOOR(ID+3) if (idim.eq.3) REAERR(4)=XCOOR(ID+4) IF (IDIM.EQ.2) CALL ERREUR(-7) IF (IDIM.EQ.3) CALL ERREUR(-8) WRITE(6,*) ' ' IF((IDIM.EQ.3).AND.(CHAMOB(N).EQ.'ROTA')) THEN IB=ICHPO5 ID=(IDIM+1)*(IB-1) INTERR(1)=IB REAERR(1)=XCOOR(ID+1) REAERR(2)=XCOOR(ID+2) REAERR(3)=XCOOR(ID+3) REAERR(4)=XCOOR(ID+4) CALL ERREUR(-8) WRITE(6,*) ' ' ENDIF * Description vitesse : CALL ERREUR(-324) WRITE(6,*) ' ' MLREEL=ICHPO6 SEGACT MLREEL N1=PROG(/1) INTERR(1)=N1 INTERR(2)=MLREEL * Listreel de pointeur %i2 qui contient les %i1 temps : CALL ERREUR(-114) if(jentet.eq.1) n1 = min (n1,10) IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1) SEGDES MLREEL MLREEL=ICHPO7 SEGACT MLREEL N1=PROG(/1) INTERR(1)=MLREEL INTERR(2)=N1 * Listreel de pointeur %i1 qui contient les %i2 valeurs : WRITE(6,*) ' ' CALL ERREUR(-115) IF(N1.NE.0) WRITE(IOIMP,5)(PROG(J),J=1,N1) WRITE(6,*) ' ' SEGDES MLREEL ELSE IF (CHAMOB(N).EQ.'TRAJ') THEN * Trajectoire decrite par le CHPOINT CALL ERREUR(-325) WRITE(6,*) ' ' IBICHP=ICHPO4 CALL ECCHPO(IBICHP,jentet) ELSE ENDIF ENDIF SEGDES ICHARG 100 CONTINUE SEGDES MCHARG RETURN END