real, parameter :: nvals = 501 real, dimension(nvals) :: x, y, xmet, ymet> common /work1/ work(nvals), istart, iend !$OMP THREADPRIVATE(/work1/) istart = 2 iend = 500 call read_coords(x,y) !$OMP PARALLEL SECTIONS COPYIN(istart,iend) !$OMP SECTION call metric(x) xmet = work !$OMP SECTION call metric(y) ymet = work !$OMP END PARALLEL SECTIONS !------------------------------------------ subroutine metric(c) real, dimension(:) :: c common /work1/ work(nvals), istart, iend !$OMP THREADPRIVATE(/work1/) do i = istart, iend work(i) = 0.5*(c(i+1)-c(i-1)) enddo end subroutine metric