      subroutine fr_del_el_inporb(inporb,frozen,delete,fermi,ierr)
!
!------------------------------------------------------------
! Lecture de frozen et delete a partir des labels d'un fichier 
! d'orbitales
!------------------------------------------------------------
!
      use mod_lirorb
      IMPLICIT REAL*8(A-H,O-X,Z),logical*1(y)
      character(*) inporb
      dimension isym(8)
      logical exist_labels
      character(18),allocatable,dimension(:) :: tipo
      integer,dimension(*) :: frozen,delete,fermi
      ierr=0
      
! Choix des numeros de fichiers a utiliser
      call open_chose_number(ifil_inporb,inporb,'old','formatted')
      call open_chose_number(ifil_bin,'fil_fr_del_el_inporb',
     *'unknown','unformatted')
      
! Lecture de INPORB
      call lirorb(INPORB,norb,nsym,isym,ifil_bin,ifil_inporb,
     *exist_labels=exist_labels)

! On saute les orbitales et les occupations
      do is=1,nsym
         if(isym(is)==0) cycle
         read(ifil_bin)
      enddo
      do is=1,nsym
         if(isym(is)==0) cycle
         read(ifil_bin)
      enddo

! Frozen ou delete deja donne(s) ?
      yfr=frozen(1)==-1
      ydel=delete(1)==-1
      if(ydel.or.yfr) then
         if(.not.exist_labels) then
            ierr=1
            return
         endif
      endif

! Lecture des labels, extraction de frozen et delete
      if(ydel.or.yfr) then
         do is=1,nsym
            if(isym(is)==0) cycle
            allocate(tipo(isym(is)))
            read(ifil_bin) tipo
c           si frozen est donne a -1, on prend les valeurs definies dans 
c           INPORB.
            if(yfr) then
               frozen(is)=0
               do k=1,fermi(is)
                  if(tipo(k)(1:2)=='G_') frozen(is)=frozen(is)+1
               enddo
            endif
c           si delete est donne a -1, on prend les valeurs definies dans 
c           INPORB
            if(ydel) then
               delete(is)=0
               do k=1+fermi(is),isym(is)
                  if(tipo(k)(1:2)=='G_') delete(is)=delete(is)+1
               enddo
            endif
            deallocate(tipo)
         enddo
      endif
      end

   
