      program casdint
      use mod_casdint
c
c--------------------------------------------------------------------
c     CALCUL DES INTEGRALES DIRECTE + ECHANGE
c--------------------------------------------------------------------
c
      IMPLICIT REAL*8(A-H,O-x,z),logical*1(y)
      integer*2 iint,jnt,knt,lnt
      dimension aaint(4096),iint(4096),jnt(4096),knt(4096),lnt(4096)
      yw1=.false.
      yw=.false.

      open(75)
      itest=0
      int_en_4_3_2_indices_differents=.false.
      int_ech_calech=.true.
      call titre('CASDINT    CASDINT    CASDINT#',60)    

      call openf


      open(26,file=ijcl1,status='old',form='unformatted')
      if(int_en_4_3_2_indices_differents)
     *open(27,file=ijcl41,status='unknown',form='unformatted')
      if(int_ech_calech)
     *open(32,file='CDV_INCH',status='unknown',form='unformatted')
      !open(28,file=ijcl31,status='unknown',form='unformatted')
      !open(29,file=ijcl21,status='unknown',form='unformatted')
      !call maz3
      if(yw)print*,'apres maz'
!
!-----------------------------
! preparation de l'adressage
!-----------------------------
!
      call prepad
c
c************************************************************
c--   lecture de la file ijcl
c     4 indices : remplissage d'un fichier par 1er indice
c     3 indices : remplissage d'un fichier par sym du 1er indice
c************************************************************
c
      ilec=0
      nintot=0
      ninte=0
      nintoe=0
! y pour Test adressage
      if(y_test_adressage) then
         allocate(y(max_stoind,4:norb))
         allocate(y3(nsym,maxval(max_stolong3)))
         y=.false.
         y3=.false.
      endif
      do
         ilec=ilec+1
         read(26,end=3) iint,jnt,knt,lnt,aaint
         if(yw)print*,'lecture 26'
         goto 4
 3       continue
         if(yw) then
            print*,'appel incr_name2'
            print*,'irec',irec
            do i=1,norb
               if(jrec(i)>0) then
                  print*,'i,jrec(i)',i,jrec(i)
                  print'(10i7)',krec(1:jrec(i),i)
               endif
            enddo
         endif
         call incr_name2(ijcl1,26)
         cycle
 4       continue
         do kk=1,4096
            i=iint(kk)
            j=jnt(kk)
            k=knt(kk)
            l=lnt(kk)
            b=aaint(kk)
            if(l==0) goto 2
            nintot=nintot+1
            if(i<k) stop'i<k'
            if(i==k) then
               call stodir3(i,j,l,2,b)
            else if(i==j) then
               call stodir3(i,k,l,1,b)
            else if(j==k) then
               call stodir3(j,i,l,2,b)
            else if(j==l) then
               call stodir3(j,i,k,2,b)
            else if(k==l) then
               call stodir3(k,i,j,1,b)
            else
!
! On suppose, comme dans molcas, que i>=k
!
               call stodir4(i,j,k,l,b)
            endif
         enddo
         if(yw)print'(4i5,f12.8,i8)',i,j,k,l,aaint(4096),ilec
      enddo
 2    continue
      do k=4,norb
         if(yw)print*,'ninti,ninti3',k,ninti(k)!,ninti3(k)
      enddo
      call stdirf4
      call stdirf3
!
!-----------------------------------------------
! Lecture des fichiers indices, qui sont mis
! un a un en memoire
! Remplissage des fichiers d'integrales
!-----------------------------------------------
!
      call fai3ijcl2
!
      call cpu_time(t1)
      call fai3ijcl3
      call cpu_time(t0)
      print*,'Fin stockage, cpu :',t0-t1
!
      call fai3ijcl4
      call cpu_time(t1)
      print*,'Fin stockage, cpu :',t1-t0
!
      end
