1! @@name: tasking.3f 2! @@type: F-fixed 3! @@compilable: yes 4! @@linkable: no 5! @@expect: success 6 MODULE LIST 7 TYPE NODE 8 INTEGER :: PAYLOAD 9 TYPE (NODE), POINTER :: NEXT 10 END TYPE NODE 11 CONTAINS 12 SUBROUTINE PROCESS(p) 13 TYPE (NODE), POINTER :: P 14 ! do work here 15 END SUBROUTINE 16 SUBROUTINE INCREMENT_LIST_ITEMS (HEAD) 17 TYPE (NODE), POINTER :: HEAD 18 TYPE (NODE), POINTER :: P 19 !$OMP PARALLEL PRIVATE(P) 20 !$OMP SINGLE 21 P => HEAD 22 DO 23 !$OMP TASK 24 ! P is firstprivate by default 25 CALL PROCESS(P) 26 !$OMP END TASK 27 P => P%NEXT 28 IF ( .NOT. ASSOCIATED (P) ) EXIT 29 END DO 30 !$OMP END SINGLE 31 !$OMP END PARALLEL 32 END SUBROUTINE 33 END MODULE 34