extr20
C EXTR20 SOURCE SP204843 24/09/10 21:15:02 12007 & IPRES1,CTYP1,IPRES2,CTYP2) C======================================================================= C C RESULTAT = EXTRAIRE CHARGEME ... ; C C 1) CHARGEME 'CHAR' (ENTIER) CHARGEME C 2) CHARGEME 'CHAM' (ENTIER) CHPOINT ou MCHAML C 3) CHARGEME 'TRAJ' (ENTIER) CHPOINT C 4) CHARGEME 'EVOL' (ENTIER) EVOLUTION C 5) CHARGEME 'VITE' (ENTIER) EVOLUTION C 6) CHARGEME 'COMP' LISTMOTS C 7) CHARGEME 'LIE ' CHARGEME C 8) CHARGEME 'LIBR' CHARGEME C 9) CHARGEME MOT 'TABLES' TABLES C 10) CHARGEME MOT CHARGEME C 11) CHARGEME LISTMOTS CHARGEME C C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMCHARG -INC SMEVOLL -INC SMLMOTS CHARACTER*(*) CMOT CHARACTER*(8) CTYP1,CTYP2 CHARACTER*(4) MCOMP,MOT4 MCOMP = CMOT IPRES1 = 0 CTYP1 = ' ' IPRES2 = 0 CTYP2 = ' ' IF (IERR.NE.0) RETURN C SEGACT,MCHARG MCHARG = IPCHAR NCHAR = KCHARG(/1) C IF (NCHAR.LT.IEC) THEN INTERR(1) = IEC GOTO 9999 ENDIF C C TRAITEMENT NOM CHARGEMENT IF (IERR.NE.0) RETURN IF (IRETOU.NE.0) THEN c write(6,*) 'extr20, cmot=',cmot c write(6,*) 'extr20, iec =',iec c write(6,*) 'extr20, mot4=',mot4 IOK = 0 INOM1 = 0 DO ICG=1,NCHAR IF (CHANOM(ICG).EQ.MOT4(1:4)) THEN INOM1 = INOM1 + 1 IF (INOM1.EQ.IEC) THEN IEC = ICG IOK = 1 ENDIF ENDIF ENDDO IF (IOK.EQ.0) THEN INTERR(1) = IEC RETURN ENDIF ENDIF C ICHG2 = ICHGT + 2 GOTO (1010, 1000, 10, 20, 30, 40, 50, 60, 70, 70, 90, 100), ICHG2 GOTO 9999 C C MOT-CLE 'CHAR' ==> ICHGT = 1 C---------------- 10 CONTINUE N = 1 SEGINI,MCHAR1 MCHAR1.KCHARG(1) = KCHARG(IEC) MCHAR1.CHANOM(1) = CHANOM(IEC) MCHAR1.CHANAT(1) = CHANAT(IEC) MCHAR1.CHAMOB(1) = CHAMOB(IEC) MCHAR1.CHALIE(1) = CHALIE(IEC) C SEGDES,MCHAR1 IPRES1 = MCHAR1 CTYP1 = 'CHARGEME' GOTO 9999 C C MOT-CLE 'CHAM' ==> ICHGT = 2 C---------------- 20 CONTINUE ICHARG = KCHARG(IEC) C SEGACT,ICHARG IF (CHATYP.EQ.'CHPOINT ' .OR. CHATYP.EQ.'MCHAML ') THEN IPRES1 = ICHPO1 CTYP1 = CHATYP ELSE INTERR(1) = IEC ENDIF C SEGDES,ICHARG GOTO 9999 C C MOT-CLE 'TRAJ' ==> ICHGT = 3 C--------------- 30 CONTINUE IF (CHAMOB(IEC).EQ.'TRAJ') THEN ICHARG = KCHARG(IEC) C SEGACT,ICHARG IPRES1 = ICHPO4 CTYP1 = 'CHPOINT' C SEGDES,ICHARG ELSE GOTO 1000 C INTERR(1) = IEC C CALL ERREUR(900) ENDIF GOTO 9999 C C MOT-CLE 'EVOL' ==> ICHGT = 4 C--------------- 40 CONTINUE ICHARG = KCHARG(IEC) C SEGACT,ICHARG IF (CHATYP.EQ.'CHPOINT ' .OR. CHATYP.EQ.'MCHAML ') THEN SEGINI,KEVOLL NUMEVX = IDCOUL NUMEVY = 'REEL' TYPX = 'LISTREEL' TYPY = 'LISTREEL' NOMEVX = 'TEMPS' NOMEVY = CHANOM(IEC) IPROGX = ICHPO2 IPROGY = ICHPO3 KEVTEX = 'Evolution temporelle de '//CHANOM(IEC) C SEGDES,KEVOLL N = 1 SEGINI,MEVOLL ITYEVO = 'REEL' IEVTEX = 'Evolution extraite d''un CHARGEMENT' IEVOLL(1) = KEVOLL C SEGDES,MEVOLL IPRES1 = MEVOLL CTYP1 = 'EVOLUTIO' ELSE INTERR(1) = IEC ENDIF C SEGDES,ICHARG GOTO 9999 C C MOT-CLE 'VITE' ==> ICHGT = 5 C--------------- 50 CONTINUE IF (CHAMOB(IEC).EQ.'TRAN' .OR. CHAMOB(IEC).EQ.'ROTA') THEN ICHARG = KCHARG(IEC) C SEGACT,ICHARG SEGINI,KEVOLL NUMEVX = IDCOUL NUMEVY = 'REEL' TYPX = 'LISTREEL' TYPY = 'LISTREEL' IPROGX = ICHPO6 IPROGY = ICHPO7 NOMEVX = 'TEMPS' NOMEVY = CHANOM(IEC) KEVTEX='Evolution temporelle de '//CHANOM(IEC) C SEGDES,KEVOLL C SEGDES,ICHARG N = 1 SEGINI,MEVOLL ITYEVO = 'REEL' IEVTEX = 'Evolution extraite d''un CHARGEMENT' IEVOLL(1) = KEVOLL C SEGDES,MEVOLL IPRES1 = MEVOLL CTYP1 = 'EVOLUTIO' ELSE INTERR(1) = IEC ENDIF GOTO 9999 C MOT-CLE 'COMP' ==> ICHGT = 6 C---------------- 60 CONTINUE JGN = 4 JGM = NCHAR SEGINI,MLMOTS NMO1 = 1 DO icha = 2, NCHAR ENDDO NMO1 = NMO1 + 1 61 CONTINUE ENDDO IF (JGM.NE.NMO1) THEN JGM = NMO1 SEGADJ,MLMOTS ENDIF C SEGDES,MLMOTS IPRES1 = MLMOTS CTYP1 = 'LISTMOTS' GOTO 9999 C C MOT-CLE 'LIE ' OU 'LIBR' ==> ICHGT = 7 ou 8 C-------------------------- 70 CONTINUE N = NCHAR SEGINI,MCHAR1 DO icha = 1, NCHAR IF (CHALIE(icha).EQ.CMOT) then ENDIF ENDDO SEGSUP,MCHAR1 MOTERR = CMOT ELSE N = kcha SEGADJ,MCHAR1 ENDIF C SEGDES,MCHAR1 IPRES1 = MCHAR1 CTYP1 = 'CHARGEME' ENDIF GOTO 9999 C C MOT-CLE 'LOBJ' ==> ICHGT = 9 C-------------------------- 90 CONTINUE ICHARG = KCHARG(IEC) C SEGACT,ICHARG IF (CHATYP.EQ.'LISTOBJE') THEN IPRES1 = ICHPO1 CTYP1 = 'LISTOBJE' ELSE INTERR(1) = IEC ENDIF C SEGDES,ICHARG GOTO 9999 C C MOT-CLE 'LREE' ==> ICHGT = 10 C-------------------------- 100 CONTINUE ICHARG = KCHARG(IEC) C SEGACT,ICHARG IF (CHATYP.EQ.'LISTOBJE') THEN IPRES1 = ICHPO2 CTYP1 = 'LISTREEL' ELSE INTERR(1) = IEC ENDIF C SEGDES,ICHARG GOTO 9999 C COMPOSANTE MOT ou LISTMOTS ==> ICHGT = 0 C---------------------------- 1000 CONTINUE N = NCHAR SEGINI,MCHAR1 NCOMP = 1 MLMOTS = LCHGT IF (LCHGT.GT.0) THEN C SEGACT,MLMOTS ENDIF DO icomp = 1, NCOMP DO icha = 1, NCHAR IF (CHANOM(icha).EQ.MCOMP) THEN ENDIF ENDDO MOTERR(1:4) = MCOMP ENDIF ENDDO C IF (LCHGT.GT.0) SEGDES,MLMOTS IF (IERR.EQ.0) THEN N = kcha SEGADJ,MCHAR1 ENDIF C SEGDES,MCHAR1 IPRES1 = MCHAR1 CTYP1 = 'CHARGEME' ELSE SEGSUP,MCHAR1 ENDIF GOTO 9999 C TABLES DE CHARGEMENT DE LA COMPOSANTE MCOMP ==> ICHGT = -1 C-------------------------------------------- 1010 CONTINUE DO icha = 1, NCHAR IF (CHANOM(icha).EQ.MCOMP) THEN ICHARG = KCHARG(icha) ENDIF ENDDO MOTERR = MCOMP ELSE ENDIF ELSE C SEGACT,ICHARG IF (CHATYP(1:8).NE.'TABLE ') THEN GOTO 9999 ENDIF IPRES1 = ICHPO2 CTYP1 = 'TABLE ' IPRES2 = ICHPO1 CTYP2 = 'TABLE ' C SEGDES,ICHARG * Mettre une verification sur le type de ichpo1 et ichpo2 : TABLE ? ENDIF GOTO 9999 9999 CONTINUE C SEGDES,MCHARG RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales