subroutine genloop(nloop,debloop,finloop,ind,ifin)
integer :: nloop,finloop(nloop),ind(nloop),debloop(nloop)
integer :: i,ifin,j

!
!-----------------------------------------------
! simuler nloop boucles imbriquees
!
! en entree
!   nloop : nb de boucles
!   ind(1:nloop) = indices des nloop boucles
!   debloop(1:nloop) : debut des boucles
!   finloop(1:nloop) : fin des boucles
! en sortie
!   ind modifie (l'indice le plus a droite possible
!   a ete incremente de 1, les indices a droite de l'indice incremente
!   sont remis a 1)
!   ifin = numero de l'indice incremente
!   ifin=0 : fin des boucles, on n'a rien incremente
!-----------------------------------------------
!

do i=nloop,1,-1
   if(ind(i)==finloop(i)) cycle
   ind(i)=ind(i)+1
   do j=i+1,nloop
      ind(j)=debloop(j)
   enddo
   ifin=i
   return
enddo
ifin=0
end
   
