use omp_lib
implicit none (type, external)
  if (.not. env_exists ("OMP_NUM_TEAMS") &
      .and. omp_get_max_teams () /= 0) &
    error stop 1
  call omp_set_num_teams (7)
  if (omp_get_max_teams () /= 7) &
    error stop 2
  if (.not. env_exists ("OMP_TEAMS_THREAD_LIMIT") &
      .and. omp_get_teams_thread_limit () /= 0) &
    error stop 3
  call omp_set_teams_thread_limit (15)
  if (omp_get_teams_thread_limit () /= 15) &
    error stop 4
  !$omp teams
    if (omp_get_max_teams () /= 7 &
        .or. omp_get_teams_thread_limit () /= 15 &
        .or. omp_get_num_teams () < 1 &
        .or. omp_get_num_teams () > 7 &
        .or. omp_get_team_num () < 0 &
        .or. omp_get_team_num () >= omp_get_num_teams () &
        .or. omp_get_thread_limit () < 1 &
        .or. omp_get_thread_limit () > 15) &
      error stop 5
  !$omp end teams
  !$omp teams num_teams(5) thread_limit (13)
    if (omp_get_max_teams () /= 7 &
        .or. omp_get_teams_thread_limit () /= 15 &
        .or. omp_get_num_teams () /= 5 &
        .or. omp_get_team_num () < 0 &
        .or. omp_get_team_num () >= omp_get_num_teams () &
        .or. omp_get_thread_limit () < 1 &
        .or. omp_get_thread_limit () > 13) &
      error stop 6
  !$omp end teams
  !$omp teams num_teams(8) thread_limit (16)
    if (omp_get_max_teams () /= 7 &
        .or. omp_get_teams_thread_limit () /= 15 &
        .or. omp_get_num_teams () /= 8 &
        .or. omp_get_team_num () < 0 &
        .or. omp_get_team_num () >= omp_get_num_teams () &
        .or. omp_get_thread_limit () < 1 &
        .or. omp_get_thread_limit () > 16) &
      error stop 7
  !$omp end teams
contains
  logical function env_exists (name)
    character(len=*) :: name
    character(len=40) :: val
    integer :: stat
    call get_environment_variable (name, val, status=stat)
    if (stat == 0) then
      env_exists = .true.
    else if (stat == 1) then
      env_exists = .false.
    else
      error stop 10
    endif
  end
end
