5 integer, parameter :: n
= 10
6 integer, parameter :: m
= 5
8 integer, parameter :: b
= 3
9 integer, parameter :: t
= n
+b
-1
11 integer, parameter :: l
= 4
12 integer, parameter :: u
= 7
13 integer, parameter :: s
= 3
14 integer, parameter :: e
= (u
-l
)/s
+1
25 integer, target
:: x(n
,n
)
26 integer, target
:: y(b
:t
)
29 x
= reshape([(i
, i
=1,n
*n
)], [n
,n
])
31 call sub_s(x(:,m
), y
, 1, n
, n
)
32 call sub_s(y
, x(:,m
), b
, t
, n
)
37 integer, target
:: x(n
,n
)
38 integer, target
:: v(e
)
41 x
= reshape([(i
, i
=1,n
*n
)], [n
,n
])
43 call sub_s(v
, v
, 1, e
, e
)
44 call sub_s(x(l
:u
:s
,m
), v
, 1, e
, e
)
45 call sub_s(v
, x(l
:u
:s
,m
), 1, e
, e
)
50 integer, target
:: x(n
,n
)
51 integer, pointer :: p(:)
55 x
= reshape([(i
, i
=1,n
*n
)], [n
,n
])
58 call sub_s(p(l
:u
:s
), v
, 1, e
, e
)
60 call sub_s(p
, v
, 1, e
, e
)
62 call sub_s(p
, v
, l
, e
+l
-1, e
)
63 p(l
:l
+e
-1) => x(l
:u
:s
,m
)
64 call sub_s(p
, v
, l
, e
+l
-1, e
)
67 call sub_s(p(l
:u
:s
), v
, 1, e
, e
)
71 call sub_s(p
, v
, 1, e
, e
)
75 call sub_s(p
, v
, l
, e
+l
-1, e
)
79 call sub_s(p
, v
, l
, e
+l
-1, e
)
82 p(l
:l
+e
-1) = x(l
:u
:s
,m
)
83 call sub_s(p
, v
, l
, e
+l
-1, e
)
90 integer, allocatable
, target
:: a(:)
94 x
= reshape([(i
, i
=1,n
*n
)], [n
,n
])
97 call sub_s(a(l
:u
:s
), v
, 1, e
, e
)
101 call sub_s(a(l
:u
:s
), v
, 1, e
, e
)
104 call sub_s(a
, v
, 1, e
, e
)
108 call sub_s(a
, v
, 1, e
, e
)
112 call sub_s(a
, v
, l
, e
+l
-1, e
)
116 call sub_s(a
, v
, l
, e
+l
-1, e
)
119 a(l
:l
+e
-1) = x(l
:u
:s
,m
)
120 call sub_s(a
, v
, l
, e
+l
-1, e
)
123 end subroutine test_a
125 subroutine sub_s(a
, b
, l
, u
, e
)
126 integer, pointer, intent(in
) :: a(:)
127 integer, intent(in
) :: b(:)
128 integer, intent(in
) :: l
129 integer, intent(in
) :: u
130 integer, intent(in
) :: e
134 if(lbound(a
,dim
=1)/=l
) stop 1001
135 if(ubound(a
,dim
=1)/=u
) stop 1002
136 if(any(shape(a
)/=[e
])) stop 1003
137 if(size(a
, dim
=1)/=e
) stop 1004
138 if(size(a
)/=size(b
)) stop 1005
140 if(a(i
)/=b(i
-l
+1)) stop 1006