C MIPCDB    SOURCE    CHAT      05/01/13    01:45:29     5004
      SUBROUTINE MIPCDB(JCDUAB,NIUNIQ,
     $     ICPCDB,
     $     IMPR,IRET)
      IMPLICIT INTEGER(I-N)
      IMPLICIT REAL*8 (A-H,O-Z)
C***********************************************************************
C NOM         : MIPCDB
C DESCRIPTION : On construit la liste des inconnues primales de CD-1Bt.
C               Une simple suppression des doublons à l'aide des listes
C               chaînées.
C
C
C LANGAGE     : ESOPE
C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
C               mél : gounand@semt2.smts.cea.fr
C***********************************************************************
C APPELES          : -
C APPELE PAR       : PROMAT
C***********************************************************************
C ENTREES            :
C SORTIES            :
C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
C***********************************************************************
C VERSION    : v1, 07/02/2000, version initiale
C HISTORIQUE : v1, 07/02/2000, création
C HISTORIQUE :
C HISTORIQUE :
C***********************************************************************
C Prière de PRENDRE LE TEMPS de compléter les commentaires
C en cas de modification de ce sous-programme afin de faciliter
C la maintenance !
C***********************************************************************

-INC PPARAM
-INC CCOPTIO
-INC SMLENTI
      POINTEUR JCDUAB.MLENTI
      POINTEUR ICPCDB.MLENTI
      INTEGER JG
      POINTEUR KRPCDB.MLENTI
*
      INTEGER NIUNIQ
      INTEGER IMPR,IRET
*
       INTEGER LDG,NNBMEB
       INTEGER IDG,INBMEB
       INTEGER NUPCDB,LAST,PREC
*
* Executable statements
*
      IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans mipcdb.eso'
      SEGACT JCDUAB
      NNBMEB=JCDUAB.LECT(/1)
      JG=NIUNIQ
      SEGINI,KRPCDB
* Degré et fin de la liste chaînée
      LDG=0
      LAST=-1
      DO 1 INBMEB=1,NNBMEB
         NUPCDB=JCDUAB.LECT(INBMEB)
         IF (KRPCDB.LECT(NUPCDB).EQ.0) THEN
            LDG=LDG+1
            KRPCDB.LECT(NUPCDB)=LAST
            LAST=NUPCDB
         ENDIF
 1    CONTINUE
      SEGDES JCDUAB
* Vidage de la liste chaînée dans ICPCDB
      JG=LDG
      SEGINI,ICPCDB
      DO 3 IDG=1,LDG
         PREC=KRPCDB.LECT(LAST)
         ICPCDB.LECT(IDG)=LAST
         LAST=PREC
 3    CONTINUE
      SEGDES ICPCDB
      SEGSUP KRPCDB
*
* Normal termination
*
      IRET=0
      RETURN
*
* Format handling
*
*
* Error handling
*
 9999 CONTINUE
      IRET=1
      WRITE(IOIMP,*) 'An error was detected in subroutine mipcdb'
      RETURN
*
* End of subroutine MIPCDB
*
      END



