C NOMC2     SOURCE    GOUNAND   25/04/30    21:15:23     12258          

*-----------------------------------------------------------------------
*
* Renommer certaines composantes d'un CHPOINT
*
* IPCH1 (e)     pointeur sur un champ par points (type CHPOINT)
* IPLM1 (e)     liste des composantes a remplacer (type LISTMOTS)
* IPLM2 (e)     liste des nouvelles composantes (type LISTMOTS)
* IPCH2 (s)     objet resultat (type CHPOINT)
*
*     D. R.-M. le 4/2/94
* nouveau paradigme sans segdes SG 2019/12/10
* verif que le resultat n'aura pas de composantes en double SG 2025/04/30
*-----------------------------------------------------------------------
*
      SUBROUTINE NOMC2(IPCH1,IPLM1,IPLM2,IPCH2)

      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8(A-H,O-Z)


-INC PPARAM
-INC CCOPTIO
-INC SMCHPOI
-INC SMLMOTS
      POINTEUR MLCOMP.MLMOTS,MLCOM2.MLMOTS
*
      CHARACTER*(LOCHPO) CNC

*      write(ioimp,*) 'nomc2'
      IPCH2 = 0
*
      MLMOT1 = IPLM1
      MLMOT2 = IPLM2
      SEGACT,MLMOT1,MLMOT2
      JGM1 = MLMOT1.MOTS(/2)
      JGM2 = MLMOT2.MOTS(/2)
      IF (JGM1.NE.JGM2) THEN
         CALL ERREUR(217)
         GOTO 900
      ENDIF
*
* Transformation des noms de composantes et verification pas de doublons
*
      call extr11(IPCH1,MLCOMP)
      if (ierr.ne.0) return
      NCOMP=MLCOMP.MOTS(/2)
      DO ICOMP=1,NCOMP
         CNC=MLCOMP.MOTS(ICOMP)
         CALL PLACE(MLMOT1.MOTS,JGM1,IMO,CNC)
         IF (IMO.NE.0) THEN
            MLCOMP.MOTS(ICOMP) = MLMOT2.MOTS(IMO)
         ENDIF
      ENDDO
      call cuniq2(mlcomp,mlcom2)
      if (ierr.ne.0) return
      NCOM2=MLCOM2.MOTS(/2)
      IF (NCOM2.LT.NCOMP) THEN
         CALL ECROBJ('LISTMOTS',mlcomp)
         CALL PRLIST
         CALL ERREUR(674)
         RETURN
      ENDIF
      segsup mlcomp
      segsup mlcom2
*
      MCHPO1 = IPCH1
      SEGINI,MCHPOI=MCHPO1
*
      NSOUPO = IPCHP(/1)
      DO 20 J=1,NSOUPO
         MSOUP1 = IPCHP(J)
         SEGINI,MSOUPO=MSOUP1
         IPCHP(J) = MSOUPO
*
         NC = NOCOMP(/2)
         DO 30 K=1,NC
            CALL PLACE(MLMOT1.MOTS,JGM1,IMO,NOCOMP(K))
            IF (IMO.NE.0) THEN
               NOCOMP(K) = MLMOT2.MOTS(IMO)
            ENDIF
 30      CONTINUE
 20   CONTINUE

      IPCH2 = MCHPOI

 900  CONTINUE

      RETURN
      END
 
