C NOMC3 SOURCE PV 11/03/08 21:15:44 6888 SUBROUTINE NOMC3(IPCH1,IPLM1,IPLM2,IPCH2,MOT) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *----------------------------------------------------------------------- * * Renommer certaines composantes d'un MCHAML * * IPCH1 (e) pointeur sur un champ par points (type MCHAML) * IPLM1 (e) liste des composantes a remplacer (type LISTMOTS) * IPLM2 (e) liste des nouvelles composantes (type LISTMOTS) * IPCH2 (s) objet resultat (type MCHAML) * MOT nouveau nom de composante * * kich 01/99 *----------------------------------------------------------------------- -INC CCOPTIO -INC SMCHAML -INC SMLMOTS * CHARACTER*(*) MOT * le MCHAML ne doit avoir qu un constituant mchel1 = ipch1 segact mchel1 n1 = mchel1.ichaml(/1) n3 = mchel1.infche(/2) * if (n1.gt.1) then * do ico = 2,n1 * if (mchel1.conche(ico).ne.mchel1.conche(1)) then * call erreur(716) * goto 990 * endif * enddo * endif segini,mchelm = mchel1 do 1 icha = 1,n1 mcham1 = mchel1.ichaml(icha) segact mcham1 n2 = mcham1.ielval(/1) IF (IPLM1.NE.-1) goto 100 * cas du MCHAML a une composante if (n2.gt.1) then moterr(1:8) = mot moterr(9:16) = 'MCHAML ' call erreur(784) goto 980 endif segini,mchaml = mcham1 ichaml(icha) = mchaml nomche(1) = mot melva1 = mcham1.ielval(1) segact melva1 n1ptel = melva1.velche(/1) n1el = melva1.velche(/2) n2ptel = melva1.ielche(/1) n2el = melva1.ielche(/2) segini,melval=melva1 ielval(1) = melval segdes melva1, melval goto 900 100 continue * cas du MCHAML a plusieurs composantes MLMOT1 = IPLM1 SEGACT MLMOT1 JGM1 = MLMOT1.MOTS(/2) MLMOT2 = IPLM2 SEGACT MLMOT2 JGM2 = MLMOT2.MOTS(/2) IF (JGM1.NE.JGM2) THEN CALL ERREUR(217) SEGDES MLMOT1,MLMOT2 goto 980 ENDIF segini,mchaml = mcham1 ichaml(icha) = mchaml DO 130 K=1,n2 CALL PLACE(MLMOT1.MOTS,JGM1,IMO,mcham1.nomche(k)) IF (IMO.NE.0) THEN nomche(k) = MLMOT2.MOTS(IMO) ELSE nomche(k) = mcham1.nomche(k) ENDIF melva1 = mcham1.ielval(k) segact melva1 n1ptel = melva1.velche(/1) n1el = melva1.velche(/2) n2ptel = melva1.ielche(/1) n2el = melva1.ielche(/2) segini,melval = melva1 ielval(k) = melval segdes melva1, melval 130 CONTINUE 900 continue segdes mchaml,mcham1 1 continue segdes mchelm,mchel1 IPCH2 = MCHELM return 980 continue segdes mcham1 do ik = 1,n1 mchaml = ichaml(ik) if (mchaml.gt.-1) then segact mchaml do il = 1,ielval(/1) melval = ielval(il) if (melval.gt.-1) segsup melval enddo segsup mchaml endif enddo segsup mchelm 990 continue segdes mchel1 return end