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