1 ! FIRSTPRIVATE: CLASS(*) + intrinsic types
2 program select_type_openmp
4 class(*), allocatable
:: val1
, val1a
, val2
, val3
8 call sub2(val1
, val1a
, val2
, val3
) ! allocatable args
10 allocate(val1
, source
=7)
11 allocate(val1a
, source
=7)
12 allocate(val2
, source
="abcdef")
13 allocate(val3
, source
=4_
"zyx4")
14 call sub3(val1
, val1a
, val2
, val3
) ! nonallocatable vars
15 deallocate(val1
, val1a
, val2
, val3
)
18 class(*), allocatable
:: val1
, val1a
, val2
, val3
19 allocate(val1a
, source
=7)
20 allocate(val2
, source
="abcdef")
21 allocate(val3
, source
=4_
"zyx4")
23 if (allocated(val1
)) stop 1
25 !$OMP PARALLEL firstprivate(val1, val1a, val2, val3)
26 if (allocated(val1
)) stop 2
27 if (.not
.allocated(val1a
)) stop 3
28 if (.not
.allocated(val2
)) stop 4
29 if (.not
.allocated(val3
)) stop 5
31 allocate(val1
, source
=7)
43 if (val1a
/= 7) stop 8
50 type is (character(len
=*))
51 if (len(val2
) /= 6) stop 10
52 if (val2
/= "abcdef") stop 11
59 type is (character(len
=*, kind
=4))
60 if (len(val3
) /= 4) stop 13
61 if (val3
/= 4_
"zyx4") stop 14
68 type is (character(len
=*, kind
=4))
69 if (len(val3
) /= 4) stop 16
70 if (val3
/= 4_
"AbCd") stop 17
77 type is (character(len
=*))
78 if (len(val2
) /= 6) stop 19
79 if (val2
/= "123456") stop 20
87 if (val1
/= 8) stop 22
95 if (val1a
/= 8) stop 24
102 if (allocated(val1
)) stop 26
103 if (.not
. allocated(val1a
)) stop 27
104 if (.not
. allocated(val2
)) stop 28
107 type is (character(len
=*))
108 if (len(val2
) /= 6) stop 29
109 if (val2
/= "abcdef") stop 30
114 type is (character(len
=*,kind
=4))
115 if (len(val3
) /= 4) stop 32
116 if (val3
/= 4_
"zyx4") stop 33
120 deallocate(val1a
, val2
, val3
)
123 subroutine sub2(val1
, val1a
, val2
, val3
)
124 class(*), allocatable
:: val1
, val1a
, val2
, val3
126 allocate(val1a
, source
=7)
127 allocate(val2
, source
="abcdef")
128 allocate(val3
, source
=4_
"zyx4")
130 if (allocated(val1
)) stop 35
132 !$OMP PARALLEL firstprivate(val1, val1a, val2, val3)
133 if (allocated(val1
)) stop 36
134 if (.not
.allocated(val1a
)) stop 37
135 if (.not
.allocated(val2
)) stop 38
136 if (.not
.allocated(val3
)) stop 39
138 allocate(val1
, source
=7)
142 if (val1
/= 7) stop 40
150 if (val1a
/= 7) stop 42
157 type is (character(len
=*))
158 if (len(val2
) /= 6) stop 44
159 if (val2
/= "abcdef") stop 45
166 type is (character(len
=*, kind
=4))
167 if (len(val3
) /= 4) stop 47
168 if (val3
/= 4_
"zyx4") stop 48
175 type is (character(len
=*, kind
=4))
176 if (len(val3
) /= 4) stop 50
177 if (val3
/= 4_
"AbCd") stop 51
184 type is (character(len
=*))
185 if (len(val2
) /= 6) stop 53
186 if (val2
/= "123456") stop 54
194 if (val1
/= 8) stop 56
202 if (val1a
/= 8) stop 58
209 if (allocated(val1
)) stop 60
210 if (.not
. allocated(val1a
)) stop 61
211 if (.not
. allocated(val2
)) stop 62
214 type is (character(len
=*))
215 if (len(val2
) /= 6) stop 63
216 if (val2
/= "abcdef") stop 64
222 type is (character(len
=*, kind
=4))
223 if (len(val3
) /= 4) stop 66
224 if (val3
/= 4_
"zyx4") stop 67
229 deallocate(val1a
, val2
, val3
)
232 subroutine sub3(val1
, val1a
, val2
, val3
)
233 class(*) :: val1
, val1a
, val2
, val3
236 !$OMP PARALLEL firstprivate(val1, val1a, val2, val3)
239 if (val1
/= 7) stop 69
247 if (val1a
/= 7) stop 71
254 type is (character(len
=*))
255 if (len(val2
) /= 6) stop 73
256 if (val2
/= "abcdef") stop 74
263 type is (character(len
=*, kind
=4))
264 if (len(val3
) /= 4) stop 76
265 if (val3
/= 4_
"zyx4") stop 77
272 type is (character(len
=*, kind
=4))
273 if (len(val3
) /= 4) stop 79
274 if (val3
/= 4_
"AbCd") stop 80
281 type is (character(len
=*))
282 if (len(val2
) /= 6) stop 82
283 if (val2
/= "123456") stop 83
291 if (val1
/= 8) stop 85
299 if (val1a
/= 8) stop 87
307 type is (character(len
=*))
308 if (len(val2
) /= 6) stop 89
309 if (val2
/= "abcdef") stop 90
315 type is (character(len
=*, kind
=4))
316 if (len(val3
) /= 4) stop 92
317 if (val3
/= 4_
"zyx4") stop 93
323 end program select_type_openmp