      subroutine rang2(ial,idet1,irang)
c---------------------------------------------------------------------
c    entree:
c    ial = nb d'electrons alpha (ou beta)
c    idet1 = numero des orb ou st les electrons
c    sortie :
c    irang = adresse de la partie alpha (ou beta) du determinant du CAS
c---------------------------------------------------------------------
      PARAMETER (maxorbcas=16,maxorb=500,maxsym=8)
      IMPLICIT INTEGER(A-H,O-x,z),LOGICAL*1(y)
      dimension idet1(maxorbcas)
      common /z/ iz(maxorbcas,maxorbcas,maxorbcas)
      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
      yw=.false.
      if(yw)write(6,*)'entree dans rang2'
      if(yw)write(6,*)'ial,idet1',ial,(idet1(k),k=1,ial)
      irang=1
      DO 1 I=1,ial
      ID=idet1(I)
      if(yw)write(6,*)'I,ID',I,ID
      irang=irang+iz(I,ID,ial)
      if(yw)write(6,*)'i,id,iz(i,id,ial)',i,id,iz(i,id,ial)
      if(yw)write(6,*)'irang,ial',irang,ial
 1    continue
      return
      end
