1! { dg-set-target-env-var OMP_NUM_TEAMS "6" }
2! { dg-set-target-env-var OMP_TEAMS_THREAD_LIMIT "12" }
3
4use omp_lib
5implicit none (type, external)
6  if (env_is_set ("OMP_NUM_TEAMS", "6")) then
7    if (omp_get_max_teams () /= 6) &
8      error stop 1
9  else
10    call omp_set_num_teams (6)
11  end if
12  if (env_is_set ("OMP_TEAMS_THREAD_LIMIT", "12")) then
13    if (omp_get_teams_thread_limit () /= 12) &
14      error stop 2
15  else
16    call omp_set_teams_thread_limit (12)
17  end if
18  !$omp teams
19   !$omp parallel if(.false.)
20    if (omp_get_max_teams () /= 6 &
21        .or. omp_get_teams_thread_limit () /= 12 &
22        .or. omp_get_num_teams () < 1 &
23        .or. omp_get_num_teams () > 6 &
24        .or. omp_get_team_num () < 0 &
25        .or. omp_get_team_num () >= omp_get_num_teams () &
26        .or. omp_get_thread_limit () < 1 &
27        .or. omp_get_thread_limit () > 12) &
28      error stop 3
29   !$omp end parallel
30  !$omp end teams
31contains
32  logical function env_is_set (name, val)
33    character(len=*) :: name, val
34    character(len=40) :: val2
35    integer :: stat
36    call get_environment_variable (name, val2, status=stat)
37    if (stat == 0) then
38      if (val == val2) then
39        env_is_set = .true.
40        return
41      end if
42    else if (stat /= 1) then
43      error stop 10
44    endif
45    env_is_set = .false.
46  end
47end
48