! @@name: tasking.13f ! @@type: F-free ! @@compilable: yes ! @@linkable: no ! @@expect: success recursive subroutine bin_search(pos, n, state) use omp_lib integer :: pos, n character, pointer :: state(:) character, target, dimension(n) :: new_state1, new_state2 integer, parameter :: LIMIT = 3 if (pos .eq. n) then call check_solution(state) return endif !$omp task final(pos > LIMIT) mergeable if (.not. omp_in_final()) then new_state1(1:pos) = state(1:pos) state => new_state1 endif state(pos+1) = 'z' call bin_search(pos+1, n, state) !$omp end task !$omp task final(pos > LIMIT) mergeable if (.not. omp_in_final()) then new_state2(1:pos) = state(1:pos) state => new_state2 endif state(pos+1) = 'y' call bin_search(pos+1, n, state) !$omp end task !$omp taskwait end subroutine