      subroutine test1
      character*8 c
      character*1 d, f
      dimension d(2), f(2)
      character*4 e
      equivalence (c(1:1), d(1)), (c(3:5), e(2:4)), (c(6:6), f(2))
      c='abcdefgh'
      if (c.ne.'abcdefgh'.or.d(1).ne.'a'.or.d(2).ne.'b') STOP 1
      if (e.ne.'bcde'.or.f(1).ne.'e'.or.f(2).ne.'f') STOP 2
      end subroutine test1
      subroutine test2
      equivalence (c(1:1), d(1)), (c(3:5), e(2:4)), (c(6:6), f(2))
      character*8 c
      character*1 d, f
      dimension d(2), f(2)
      character*4 e
      c='abcdefgh'
      if (c.ne.'abcdefgh'.or.d(1).ne.'a'.or.d(2).ne.'b') STOP 3
      if (e.ne.'bcde'.or.f(1).ne.'e'.or.f(2).ne.'f') STOP 4
      end subroutine test2
      subroutine test3
      character*8 c
      character*1 d, f
      character*4 e
      equivalence (c(1:1), d(1)), (c(3:5), e(2:4)), (c(6:6), f(2))
      dimension d(2), f(2)
      c='abcdefgh'
      if (c.ne.'abcdefgh'.or.d(1).ne.'a'.or.d(2).ne.'b') STOP 5
      if (e.ne.'bcde'.or.f(1).ne.'e'.or.f(2).ne.'f') STOP 6
      end subroutine test3
      subroutine test4
      dimension d(2), f(2)
      equivalence (c(1:1), d(1)), (c(3:5), e(2:4)), (c(6:6), f(2))
      character*8 c
      character*1 d, f
      character*4 e
      c='abcdefgh'
      if (c.ne.'abcdefgh'.or.d(1).ne.'a'.or.d(2).ne.'b') STOP 7
      if (e.ne.'bcde'.or.f(1).ne.'e'.or.f(2).ne.'f') STOP 8
      end subroutine test4
      program main
      call test1
      call test2
      call test3
      call test4
      end program main
