blob: ec928d00aec8126948a47ce52d39749ac7771085 [file] [log] [blame]
! Program to test initialization of equivalence blocks. PR13742.
! Some forms are not yet implemented. These are indicated by !!$
subroutine test0s
character*10 :: x = "abcdefghij"
character*10 :: y
equivalence (x,y)
character*10 :: xs(10)
character*10 :: ys(10)
equivalence (xs,ys)
data xs /10*"abcdefghij"/
if (y.ne."abcdefghij") STOP 1
if (ys(1).ne."abcdefghij") STOP 2
if (ys(10).ne."abcdefghij") STOP 3
end
subroutine test0
integer :: x = 123
integer :: y
equivalence (x,y)
if (y.ne.123) STOP 4
end
subroutine test1
integer :: a(3)
integer :: x = 1
integer :: y
integer :: z = 3
equivalence (a(1), x)
equivalence (a(3), z)
if (x.ne.1) STOP 5
if (z.ne.3) STOP 6
if (a(1).ne.1) STOP 7
if (a(3).ne.3) STOP 8
end
subroutine test2
integer :: x
integer :: z
integer :: a(3) = 123
equivalence (a(1), x)
equivalence (a(3), z)
if (x.ne.123) STOP 9
if (z.ne.123) STOP 10
end
subroutine test3
integer :: x
!!$ integer :: y = 2
integer :: z
integer :: a(3)
equivalence (a(1),x), (a(2),y), (a(3),z)
data a(1) /1/, a(3) /3/
if (x.ne.1) STOP 11
!!$ if (y.ne.2) STOP 12
if (z.ne.3) STOP 13
end
subroutine test4
integer a(2)
integer b(2)
integer c
equivalence (a(2),b(1)), (b(2),c)
data a/1,2/
data c/3/
if (b(1).ne.2) STOP 14
if (b(2).ne.3) STOP 15
end
!!$subroutine test5
!!$ integer a(2)
!!$ integer b(2)
!!$ integer c
!!$ equivalence (a(2),b(1)), (b(2),c)
!!$ data a(1)/1/
!!$ data b(1)/2/
!!$ data c/3/
!!$ if (a(2).ne.2) STOP 16
!!$ if (b(2).ne.3) STOP 17
!!$ print *, "Passed test5"
!!$end
program main
call test0s
call test0
call test1
call test2
call test3
call test4
!!$ call test5
end