1! Program to test initialization of equivalence blocks. PR13742. 2! Some forms are not yet implemented. These are indicated by !!$ 3 4subroutine test0s 5 character*10 :: x = "abcdefghij" 6 character*10 :: y 7 equivalence (x,y) 8 9 character*10 :: xs(10) 10 character*10 :: ys(10) 11 equivalence (xs,ys) 12 data xs /10*"abcdefghij"/ 13 14 if (y.ne."abcdefghij") STOP 1 15 if (ys(1).ne."abcdefghij") STOP 2 16 if (ys(10).ne."abcdefghij") STOP 3 17end 18 19subroutine test0 20 integer :: x = 123 21 integer :: y 22 equivalence (x,y) 23 if (y.ne.123) STOP 4 24end 25 26subroutine test1 27 integer :: a(3) 28 integer :: x = 1 29 integer :: y 30 integer :: z = 3 31 equivalence (a(1), x) 32 equivalence (a(3), z) 33 if (x.ne.1) STOP 5 34 if (z.ne.3) STOP 6 35 if (a(1).ne.1) STOP 7 36 if (a(3).ne.3) STOP 8 37end 38 39subroutine test2 40 integer :: x 41 integer :: z 42 integer :: a(3) = 123 43 equivalence (a(1), x) 44 equivalence (a(3), z) 45 if (x.ne.123) STOP 9 46 if (z.ne.123) STOP 10 47end 48 49subroutine test3 50 integer :: x 51!!$ integer :: y = 2 52 integer :: z 53 integer :: a(3) 54 equivalence (a(1),x), (a(2),y), (a(3),z) 55 data a(1) /1/, a(3) /3/ 56 if (x.ne.1) STOP 11 57!!$ if (y.ne.2) STOP 12 58 if (z.ne.3) STOP 13 59end 60 61subroutine test4 62 integer a(2) 63 integer b(2) 64 integer c 65 equivalence (a(2),b(1)), (b(2),c) 66 data a/1,2/ 67 data c/3/ 68 if (b(1).ne.2) STOP 14 69 if (b(2).ne.3) STOP 15 70end 71 72!!$subroutine test5 73!!$ integer a(2) 74!!$ integer b(2) 75!!$ integer c 76!!$ equivalence (a(2),b(1)), (b(2),c) 77!!$ data a(1)/1/ 78!!$ data b(1)/2/ 79!!$ data c/3/ 80!!$ if (a(2).ne.2) STOP 16 81!!$ if (b(2).ne.3) STOP 17 82!!$ print *, "Passed test5" 83!!$end 84 85program main 86 call test0s 87 call test0 88 call test1 89 call test2 90 call test3 91 call test4 92!!$ call test5 93end 94 95