4 ! Test that the STAT argument to DEALLOCATE works with POINTERS and
6 program deallocate_stat
11 real, pointer :: a1(:), a2(:,:), a3(:,:,:), a4(:,:,:,:), &
12 & a5(:,:,:,:,:), a6(:,:,:,:,:,:), a7(:,:,:,:,:,:,:)
14 real, allocatable
:: b1(:), b2(:,:), b3(:,:,:), b4(:,:,:,:), &
15 & b5(:,:,:,:,:), b6(:,:,:,:,:,:), b7(:,:,:,:,:,:,:)
17 allocate(a1(2), a2(2,2), a3(2,2,2), a4(2,2,2,2), a5(2,2,2,2,2))
18 allocate(a6(2,2,2,2,2,2), a7(2,2,2,2,2,2,2))
20 a1
= 1. ; a2
= 2. ; a3
= 3. ; a4
= 4. ; a5
= 5. ; a6
= 6. ; a7
= 7.
23 deallocate(a1
, stat
=i
) ; if (i
/= 0) call abort
24 deallocate(a2
, stat
=i
) ; if (i
/= 0) call abort
25 deallocate(a3
, stat
=i
) ; if (i
/= 0) call abort
26 deallocate(a4
, stat
=i
) ; if (i
/= 0) call abort
27 deallocate(a5
, stat
=i
) ; if (i
/= 0) call abort
28 deallocate(a6
, stat
=i
) ; if (i
/= 0) call abort
29 deallocate(a7
, stat
=i
) ; if (i
/= 0) call abort
32 deallocate(a1
, stat
=i
) ; if (i
/= 1) call abort
33 deallocate(a2
, stat
=i
) ; if (i
/= 1) call abort
34 deallocate(a3
, stat
=i
) ; if (i
/= 1) call abort
35 deallocate(a4
, stat
=i
) ; if (i
/= 1) call abort
36 deallocate(a5
, stat
=i
) ; if (i
/= 1) call abort
37 deallocate(a6
, stat
=i
) ; if (i
/= 1) call abort
38 deallocate(a7
, stat
=i
) ; if (i
/= 1) call abort
40 allocate(b1(2), b2(2,2), b3(2,2,2), b4(2,2,2,2), b5(2,2,2,2,2))
41 allocate(b6(2,2,2,2,2,2), b7(2,2,2,2,2,2,2))
43 b1
= 1. ; b2
= 2. ; b3
= 3. ; b4
= 4. ; b5
= 5. ; b6
= 6. ; b7
= 7.
46 deallocate(b1
, stat
=i
) ; if (i
/= 0) call abort
47 deallocate(b2
, stat
=i
) ; if (i
/= 0) call abort
48 deallocate(b3
, stat
=i
) ; if (i
/= 0) call abort
49 deallocate(b4
, stat
=i
) ; if (i
/= 0) call abort
50 deallocate(b5
, stat
=i
) ; if (i
/= 0) call abort
51 deallocate(b6
, stat
=i
) ; if (i
/= 0) call abort
52 deallocate(b7
, stat
=i
) ; if (i
/= 0) call abort
55 deallocate(b1
, stat
=i
) ; if (i
/= 1) call abort
56 deallocate(b2
, stat
=i
) ; if (i
/= 1) call abort
57 deallocate(b3
, stat
=i
) ; if (i
/= 1) call abort
58 deallocate(b4
, stat
=i
) ; if (i
/= 1) call abort
59 deallocate(b5
, stat
=i
) ; if (i
/= 1) call abort
60 deallocate(b6
, stat
=i
) ; if (i
/= 1) call abort
61 deallocate(b7
, stat
=i
) ; if (i
/= 1) call abort
64 allocate(a1(2), a2(2,2), a3(2,2,2), b4(2,2,2,2), b5(2,2,2,2,2))
65 allocate(b6(2,2,2,2,2,2))
67 a1
= 1. ; a2
= 2. ; a3
= 3. ; b4
= 4. ; b5
= 5. ; b6
= 6.
70 deallocate(a1
, stat
=i
) ; if (i
/= 0) call abort
71 deallocate(a2
, a1
, stat
=i
) ; if (i
/= 1) call abort
72 deallocate(a1
, a3
, a2
, stat
=i
) ; if (i
/= 2) call abort
73 deallocate(b4
, stat
=i
) ; if (i
/= 0) call abort
74 deallocate(b4
, b5
, stat
=i
) ; if (i
/= 1) call abort
75 deallocate(b4
, b5
, b6
, stat
=i
) ; if (i
/= 2) call abort
77 end program deallocate_stat