program main implicit none (type, external) integer :: r, r2, i integer a(0:63) a = 0 r = 0; r2 = 0 !$omp parallel !$omp scope !$omp scope !$omp do do i = 0, 63 a(i) = a(i) + 1 end do !$omp end do !$omp end scope nowait !$omp end scope nowait !$omp scope reduction(+: r) !$omp do do i = 0, 63 r = r + i if (a(i) /= 1) & stop 1 end do !$omp end do nowait !$omp barrier !$omp end scope nowait !$omp barrier if (r /= 64 * 63 / 2) & stop 2 !$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) & stop 3 !$omp do do i = 0, 63 if (a(i) /= i + 1) & stop 4 end do !$omp end do nowait !$omp end parallel end