      subroutine sub_mdc(nal,nbet)
c------------------------------------------------------------------
c    fonction combin = combinaison de x electrons dans y orbitales
c                      renvoie le nb de det.(nt) et le tableau des
c                      differents det.(idet)
c------------------------------------------------------------------
c    sortie : tableau maxc(nelc,iscas,ispcas) = nb de det. d'une
c             categorie du CAS
c------------------------------------------------------------------
c     Variables locales :
c     is : symetrie du CAS
c     ispcas : spin du cas / spin de CAS0 (CAS initial)
c------------------------------------------------------------------
      IMPLICIT REAL*8(A-H,O-X,Z),LOGICAL*1 (Y)
      PARAMETER (maxorb=500,maxsym=8,MNEL=5,maxorbcas=16,maxdetc=12870)
      PARAMETER (MAXELCAS=20)
      common /cs/ noac,nelac,numac(maxorbcas),itype(maxorb),is0,ms2
      common/sy2/nts(maxsym),ncs(maxsym),nps(maxsym)
     *,norbs(maxsym)
      common /prep/ nca0,ncb0,ic0(maxorbcas),icamun(maxorb+maxorb)
     *,numt(maxorb),nump(maxorb),nv
     *,gener,yoc(maxorb+maxorb),yrefc(maxorbcas),yac(maxorb)
     *,ygmono,ygddci,ygddc2,ygcas,ygtous
      character*4 gener
      common/cas_spin/isz0
      common/sym/itsym(2*maxorb),its(maxsym,maxsym),nsym
      common/mxdetc/maxc(-2:2,maxsym,-2:2),
     *maxca(-2:2,maxsym,maxsym,-2:2)
      common/util/jsp(-2:2,-2:2),ksp(-4:4)
      dimension ideta(maxelcas,maxdetc)
      dimension idetb(maxelcas,maxdetc)
      yw=.false.
      if(yw)write(6,*)'sub_mdc nal,nbet',nal,nbet
      if(nal.eq.0) then
         nta=1
      else
         call combin(ideta,noac,nal,nta,maxelcas,maxdetc)
      endif
      if(nbet.eq.0) then
         ntb=1
      else
         call combin(idetb,noac,nbet,ntb,maxelcas,maxdetc)
      endif
      if(yw)write(6,*)'sub_mdc nta,ntb,isz0',nta,ntb,isz0
      is=1
      do 1 k=1,nta
      do 2 l=1,ntb
      is=1
      do kk=1,nal
         is=its(is,itsym(numac(ideta(kk,k))))
      enddo
      isa=is
      do kk=1,nbet
         is=its(is,itsym(numac(idetb(kk,l))))
      enddo
      nelc=nal-nca0+nbet-ncb0
      if(nelc.gt.2.or.nelc.lt.-2)stop 22
      ispcas=nal-nbet-isz0
      ispc1=ksp(ispcas)
      maxca(nelc,is,isa,ispc1)= maxca(nelc,is,isa,ispc1)+1
      maxc(nelc,is,ispc1)= maxc(nelc,is,ispc1)+1
      if(yw)write(6,*)'nelc,is,ispcas,ispc1,maxc,',
     *nelc,is,ispcas,ispc1,maxc(nelc,is,ispc1)
      if(yw)write(6,*)'nelc,is,isa,ispc1,maxca,nal,nbet',
     *nelc,is,isa,ispc1,maxca(nelc,is,isa,ispc1),nal,nbet
 2    continue
 1    continue
c     if(yw) then
c     do i=-2,+2
c        do j=1,nsym
c           write(6,*)'i,j,maxc(i,j,k)',(maxc(i,j,k),k=-1,1)
c        enddo
c     enddo
c     endif
      return
      end
