      program IJKLOC
      use module
      use moddi
      IMPLICIT REAL(8)(A-H,O-X,Z),logical(1)(y)
      print*,' '
      print*,'*******************************************************'
      print*,'======================================================='
      print*,'                       IJKLOC'
      print*,'======================================================='
      print*,'*******************************************************'
      print*,' '
      open(75,file='BID75')

! save input data
      call sto5_1(5,93,'BID_IJKLOC_93')
      rewind 93

! Look if it is a Cholesky run
! if yes, transform Cholesky vectors
      call isitcholesky

! Write symmetrized orbitals of molcas in a basis on desymmetrized AO
      
      call titre('Orbital Desymetrisation#',60)
      print*,' '
      print*,'***************************************************'
      print*,'Begin Orbital Desymetrisation'
      icpu1=itemps(idum)
      call desymorb('ijkloc')
      icpu2=itemps(idum)
      print*,' '
      print*,'End Orbital Desymetrisation. cpu',icpu2-icpu1
      print*,'***************************************************'
      if(stop=='DESYMORB') stop

!
! read data, open files
      call openf
      mem_reste=mem
!
! Desymmetrise LOs
      call orb
      allocate (iclas(norb))
      allocate (iclasloc(norb))
!
! Treat symmetry
      call equis
!
! Write One electron operators
!
      ! on lit la matrice de recouvrement entre OA desymetrisees
      ! verif d'orthogonalite des OL
      allocate (s(noa,noa))
      open(99,form='unformatted',status='old',file='DESYMORB2')
      read(99)
      read(99)
      read(99)
      read(99) s(:,:)
      close(99)
      call ecrmono(trim(prefix)//'Monoloc',3,'ijkloc',
     *isym,nsym,s,hmono,norb,noa)
!
! Treat symmetry
      call calequis
!
! Transform two electron integrals
      if(ychol) then
         if(.not.notwo) then
!
! Compute integrals from Cholesky vectors
            if(itest(1)==1) call transforb
            print*,' '
            print*,'**********************************************'
            print*,'Begin Cholesky Transformation'
            icpu1=itemps(idum)
            call cholesky
            icpu2=itemps(idum)
            print*,' '
            print*,'End Cholesky Transformation. cpu',icpu2-icpu1
            print*,'**********************************************'
         endif
      else
         if(.not.notwo) call di
      endif
      call flush(6)
      if(notwo.and.itest(1)==1) call transforb
      deallocate (s)
C      call orbiliens
      ! write info file
      call ecrinfo(trim(prefix)//'Infoloc',28,1,'ijkloc',
     *nsym,isym,norb,ycl1,nb_ijcl,nprint,noa,nb_ijcloc,orbi)
      call ecrlocinfo
      close(93,status='delete')
      close(75,status='delete')
      close(4,status='delete')
      call orb_at_corresp(trim(prefix)//'Infoloc')
!
! Creation fichier molden
!

      call faimolden(prefix)
      print*,' '
      print*,'*******************************************************'
      print*,'======================================================='
      print*,'                  fin  IJKLOC'
      print*,'======================================================='
      print*,'*******************************************************'
      print*,' '
      end
       function itemps(i)
      double precision t1
      call cpu_time(t1)
      itemps=t1
      return
      end
       subroutine faimolden(prefix)
      character(80) molden_modele,ol,prefix,molden_loc
      call titre('FAIMOLDEN  faimolden  FAIMOLDEN  faimolden#',60)

!***********molden_modele
      molden_modele=trim(prefix)//'scf.molden'
      open(99,file=molden_modele,status='old',err=1)
      goto 10
 1    continue
      molden_modele=trim(prefix)//'rasscf.molden'
      open(99,file=molden_modele,status='old',err=2)
      goto 10
 2    continue
      molden_modele=trim(prefix)//'guessorb.molden'
      open(99,file=molden_modele,status='old',err=3)
      goto 10
 3    continue
      
      print*,'Pas de fichier modele molden trouve'
      print*,
     *'On ne genere pas de fichier molden pour les orbitales locales'
      return
      print*,'fichier molden modele trouve : ',trim(molden_modele)
      call flush(6)

 10   continue
      close(99)

!***********OL
      ol='ORB_IJKLOC'

!***********molden_loc
      molden_loc=trim(prefix)//'ijkloc.molden'

!**************
      print*,'appel faimolden1'
      call faimolden1(molden_modele,ol,prefix,molden_loc)
      print*,'retour faimolden1'

      call titre('FIN IJKLOC#',60)

      end

