!---- Filename: dodir.f
!---- Demonstrate DO directive
      program dodir
      implicit none
      integer i,l
      integer, parameter:: DIM=16
      real a(dim), b(dim), s
      integer nthreads, tnumber
      integer OMP_GET_NUM_THREADS, OMP_GET_THREAD_NUM

      call random_number(A)
      call random_number(B)
      !$OMP PARALLEL DEFAULT(PRIVATE) SHARED(A,B)
      !$OMP DO SCHEDULE(STATIC,4)
      do i=2,dim
         b(i)=(a(i) - a(i-1)) / 2.0
         nthreads = OMP_GET_NUM_THREADS()
         tnumber = OMP_GET_THREAD_NUM()
         write (*,*) "Thread",tnumber,"of",nthreads,"has I =",i
      enddo
      !$OMP END DO
      !$OMP END PARALLEL
      s = maxval(b)
      l = maxloc(b,1)
      write (*,*) "Maximum gradient:",s,"at location:",l
      end

