program main implicit none integer a(0:63) integer r, r2, i, n a = 0 r = 0 r2 = 0 n = 64 !$omp parallel !$omp scope !$omp scope firstprivate (n) !$omp do do i = 0, 63 a(i) = a(i) + 1 end do !$omp end scope nowait !$omp end scope nowait !$omp scope reduction(+: r) firstprivate (n) !$omp do do i = 0, 63 r = r + i if (a(i) /= 1) & error stop end do !$omp end do nowait !$omp barrier if (n /= 64) then error stop else n = 128 end if !$omp end scope nowait !$omp barrier if (r /= 64 * 63 / 2) & error stop !$omp scope private (i) !$omp scope reduction(+: r2) !$omp do do i = 0, 63 r2 = r2 + 2 * i a(i) = a(i) + i end do !$omp end do nowait !$omp end scope !$omp end scope nowait if (r2 /= 64 * 63) & error stop !$omp do do i = 0, 63 if (a(i) /= i + 1) & error stop end do !$omp end do nowait !$omp end parallel end program