1        ! Program to test data statement
2        program data
3        call sub1()
4        call sub2()
5        end
6        subroutine sub1()
7        integer i
8        type tmp
9          integer, dimension(4)::a
10          real :: r
11        end type
12        type tmp1
13          type (tmp) t1(4)
14          integer b
15        end type
16        type (tmp1) tmp2(2)
17        ! Full array and scalar component initializer
18        data tmp2(2)%t1(2)%r, tmp2(1)%t1(3)%a, tmp2(1)%b/220,136,137,138,139,10/
19        data tmp2(2)%t1(4)%a,tmp2(2)%t1(3)%a/241,242,4*5,233,234/
20        ! implied DO
21        data (tmp2(1)%t1(2)%a(i),i=4,1,-1)/124,123,122,121/
22        ! array section
23        data tmp2(1)%t1(4)%a(4:1:-1)/144,143,142,141/
24        data tmp2(1)%t1(1)%a(1:4:2)/111,113/
25        ! array element reference
26        data tmp2(2)%t1(2)%a(3), tmp2(2)%t1(2)%a(1)/223,221/
27
28        if (any(tmp2(1)%t1(1)%a .ne. (/111,0,113,0/))) STOP 1
29        if (tmp2(1)%t1(1)%r .ne. 0.0) STOP 2
30        if (tmp2(1)%b .ne. 10) STOP 3
31
32        if (any(tmp2(1)%t1(2)%a .ne. (/121,122,123,124/))) STOP 4
33        if (tmp2(1)%t1(2)%r .ne. 0.0) STOP 5
34        if (tmp2(1)%b .ne. 10) STOP 6
35
36        if (any(tmp2(1)%t1(3)%a .ne. (/136,137,138,139/))) STOP 7
37        if (tmp2(1)%t1(3)%r .ne. 0.0) STOP 8
38        if (tmp2(1)%b .ne. 10) STOP 9
39
40        if (any(tmp2(1)%t1(4)%a .ne. (/141,142,143,144/))) STOP 10
41        if (tmp2(1)%t1(4)%r .ne. 0.0) STOP 11
42        if (tmp2(1)%b .ne. 10) STOP 12
43
44        if (any(tmp2(2)%t1(1)%a .ne. (/0,0,0,0/))) STOP 13
45        if (tmp2(2)%t1(1)%r .ne. 0.0) STOP 14
46        if (tmp2(2)%b .ne. 0) STOP 15
47
48        if (any(tmp2(2)%t1(2)%a .ne. (/221,0,223,0/))) STOP 16
49        if (tmp2(2)%t1(2)%r .ne. 220.0) STOP 17
50        if (tmp2(2)%b .ne. 0) STOP 18
51
52        if (any(tmp2(2)%t1(3)%a .ne. (/5,5,233,234/))) STOP 19
53        if (tmp2(2)%t1(3)%r .ne. 0.0) STOP 20
54        if (tmp2(2)%b .ne. 0) STOP 21
55
56        if (any(tmp2(2)%t1(4)%a .ne. (/241,242,5,5/))) STOP 22
57        if (tmp2(2)%t1(4)%r .ne. 0.0) STOP 23
58        if (tmp2(2)%b .ne. 0) STOP 24
59
60        end
61        subroutine sub2()
62        integer a(4,4), b(10)
63        integer i,j,k
64        real r,t
65        data i,j,r,k,t,b(5),b(2),((a(i,j),i=1,4,1),j=4,1,-1)/1,2,3,4,5,5,2,&
66             1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16/
67        if ((i.ne.1) .and. (j.ne.2).and.(k.ne.4)) STOP 25
68        if ((r.ne.3.0).and.(t.ne.5.0))  STOP 26
69        if (any(b.ne.(/0,2,0,0,5,0,0,0,0,0/))) STOP 27
70        if (any(a.ne.reshape((/13,14,15,16,9,10,11,12,5,6,7,8,1,2,3,4/),(/4,4/)))) STOP 28
71        end
72
73