1subroutine f1
2  integer a(20:50,70:90)
3!$omp parallel workshare
4  a(:,:) = 17
5!$omp end parallel workshare
6  if (any (a.ne.17)) call abort
7end subroutine f1
8subroutine f2
9  integer a(20:50,70:90),d(15),e(15),f(15)
10  integer b, c, i
11!$omp parallel workshare
12  c = 5
13  a(:,:) = 17
14  b = 4
15  d = (/ 0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 10, 0, 0, 13, 14 /)
16  forall (i=1:15, d(i) /= 0)
17     d(i) = 0
18  end forall
19  e = (/ 4, 5, 2, 6, 4, 5, 2, 6, 4, 5, 2, 6, 4, 5, 2 /)
20  f = 7
21  where (e.ge.5) f = f + 1
22!$omp end parallel workshare
23  if (any (a.ne.17)) call abort
24  if (c.ne.5.or.b.ne.4) call abort
25  if (any(d.ne.0)) call abort
26  do i = 1, 15
27    if (e(i).ge.5) then
28      if (f(i).ne.8) call abort
29    else
30      if (f(i).ne.7) call abort
31    end if
32  end do
33end subroutine f2
34
35  call f1
36  call f2
37end
38