extr20
C EXTR20 SOURCE OF166741 25/02/20 21:16:31 12165
& 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