6 ! Run-time test for Fortran 2003 NAMELISTS
7 ! Version for non-strings
12 character(len
=1000) :: str
14 integer, allocatable
:: a(:)
15 integer, allocatable
:: b
16 integer, pointer :: ap(:)
17 integer, pointer :: bp
26 type(t
),allocatable
:: g
,h(:)
27 type(t
),pointer :: i
,j(:)
29 namelist /nml
/ a
, b
, c
, d
, ap
, bp
,e
,f
,g
,h
,i
,j
40 e
%c2
= [-702,-703,-704]
43 f(1)%c2
= [44001,44002,44003]
44 f(2)%c2
= [44011,44012,44013]
46 allocate(g
,h(2),i
,j(2))
49 g
%c2
= [-602,6703,-604]
52 h(1)%c2
= [45001,45002,45003]
53 h(2)%c2
= [45011,45012,45013]
56 i
%c2
= [-502,-503,-504]
59 j(1)%c2
= [46001,46002,46003]
60 j(2)%c2
= [46011,46012,46013]
63 str
= repeat('X', len(str
))
99 if (any (a
/= [1,2])) STOP 1
100 if (any (ap
/= [98, 99])) STOP 2
102 if (bp
/= 101) STOP 4
104 if (any (d
/= [-1, -2, -3])) STOP 6
106 if (e
%c1
/= -701) STOP 7
107 if (any (e
%c2
/= [-702,-703,-704])) STOP 8
108 if (f(1)%c1
/= 33001) STOP 9
109 if (f(2)%c1
/= 33002) STOP 10
110 if (any (f(1)%c2
/= [44001,44002,44003])) STOP 11
111 if (any (f(2)%c2
/= [44011,44012,44013])) STOP 12
113 if (g
%c1
/= -601) STOP 13
114 if (any(g
%c2
/= [-602,6703,-604])) STOP 14
115 if (h(1)%c1
/= 35001) STOP 15
116 if (h(2)%c1
/= 35002) STOP 16
117 if (any (h(1)%c2
/= [45001,45002,45003])) STOP 17
118 if (any (h(2)%c2
/= [45011,45012,45013])) STOP 18
120 if (i
%c1
/= -501) STOP 19
121 if (any (i
%c2
/= [-502,-503,-504])) STOP 20
122 if (j(1)%c1
/= 36001) STOP 21
123 if (j(2)%c1
/= 36002) STOP 22
124 if (any (j(1)%c2
/= [46001,46002,46003])) STOP 23
125 if (any (j(2)%c2
/= [46011,46012,46013])) STOP 24
127 ! Check argument passing (dummy processing)
128 call test2(a
,b
,c
,d
,ap
,bp
,e
,f
,g
,h
,i
,j
,2)
131 subroutine test2(x1
,x2
,x3
,x4
,x1p
,x2p
,x6
,x7
,x8
,x9
,x10
,x11
,n
)
132 integer, allocatable
:: x1(:)
133 integer, allocatable
:: x2
134 integer, pointer :: x1p(:)
135 integer, pointer :: x2p
141 type(t
),allocatable
:: x8
,x9(:)
142 type(t
),pointer :: x10
,x11(:)
145 namelist /nml2
/ x1
, x2
, x3
, x4
,x5
,x1p
,x2p
,x6
,x7
,x8
,x9
,x10
,x11
,x12
151 x12(1)%c2
= [47001,47002,47003]
152 x12(2)%c2
= [47011,47012,47013]
155 str
= repeat('X', len(str
))
170 x7(1)%c2
= [-1,-1,-1]
171 x7(2)%c2
= [-1,-1,-1]
177 x9(1)%c2
= [-1,-1,-1]
178 x9(2)%c2
= [-1,-1,-1]
184 x11(1)%c2
= [-1,-1,-1]
185 x11(2)%c2
= [-1,-1,-1]
191 x12(1)%c2
= [-1,-1,-1]
192 x12(2)%c2
= [-1,-1,-1]
198 if (any (x1
/= [1,2])) STOP 25
199 if (any (x1p
/= [98, 99])) STOP 26
201 if (x2p
/= 101) STOP 28
203 if (any (x4
/= [-1, -2, -3])) STOP 30
205 if (x6
%c1
/= -701) STOP 31
206 if (any (x6
%c2
/= [-702,-703,-704])) STOP 32
207 if (x7(1)%c1
/= 33001) STOP 33
208 if (x7(2)%c1
/= 33002) STOP 34
209 if (any (x7(1)%c2
/= [44001,44002,44003])) STOP 35
210 if (any (x7(2)%c2
/= [44011,44012,44013])) STOP 36
212 if (x8
%c1
/= -601) STOP 37
213 if (any(x8
%c2
/= [-602,6703,-604])) STOP 38
214 if (x9(1)%c1
/= 35001) STOP 39
215 if (x9(2)%c1
/= 35002) STOP 40
216 if (any (x9(1)%c2
/= [45001,45002,45003])) STOP 41
217 if (any (x9(2)%c2
/= [45011,45012,45013])) STOP 42
219 if (x10
%c1
/= -501) STOP 43
220 if (any (x10
%c2
/= [-502,-503,-504])) STOP 44
221 if (x11(1)%c1
/= 36001) STOP 45
222 if (x11(2)%c1
/= 36002) STOP 46
223 if (any (x11(1)%c2
/= [46001,46002,46003])) STOP 47
224 if (any (x11(2)%c2
/= [46011,46012,46013])) STOP 48
226 if (any (x5
/= [ 42, 53 ])) STOP 49
228 if (x12(1)%c1
/= 37001) STOP 50
229 if (x12(2)%c1
/= 37002) STOP 51
230 if (any (x12(1)%c2
/= [47001,47002,47003])) STOP 52
231 if (any (x12(2)%c2
/= [47011,47012,47013])) STOP 53