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