! { dg-do run } | |
! { dg-options "-fdec-structure" } | |
! | |
! PR fortran/82511 | |
! | |
! Verify that structure variables with UNION components | |
! are accepted in an I/O-list READ. | |
! | |
implicit none | |
structure /s/ | |
union | |
map | |
character(16) :: c16_1 | |
end map | |
map | |
character(16) :: c16_2 | |
end map | |
end union | |
end structure | |
record /s/ r | |
character(32) :: instr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^" | |
r.c16_1 = ' ' | |
r.c16_2 = ' ' | |
! The record r shall be treated as if its components are listed: | |
! read(...) r.c16_1, r.c16_2 | |
! This shall correspond to the formatted read of A16,A16 | |
read(instr, '(A16,A16)') r | |
! r.c16_1 and r.c16_2 are in a union, thus share the same memory | |
! and the first 16 bytes of instr are overwritten | |
if ( r.c16_1 .ne. instr(17:32) .or. r.c16_2 .ne. instr(17:32) ) then | |
STOP 1 | |
endif | |
end |