[Bug fortran/78854] New: [F03] DTIO namelist output not working on internal unit
janus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Dec 18 22:56:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78854
Bug ID: 78854
Summary: [F03] DTIO namelist output not working on internal
unit
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: janus at gcc dot gnu.org
Target Milestone: ---
Found when working on PR78661:
MODULE m
IMPLICIT NONE
TYPE :: t
CHARACTER :: c
CONTAINS
PROCEDURE :: write_formatted
GENERIC :: WRITE(FORMATTED) => write_formatted
END TYPE
CONTAINS
SUBROUTINE write_formatted(dtv, unit, iotype, v_list, iostat, iomsg)
CLASS(t), INTENT(IN) :: dtv
INTEGER, INTENT(IN) :: unit
CHARACTER(*), INTENT(IN) :: iotype
INTEGER, INTENT(IN) :: v_list(:)
INTEGER, INTENT(OUT) :: iostat
CHARACTER(*), INTENT(INOUT) :: iomsg
WRITE (unit, "(A)", IOSTAT=iostat, IOMSG=iomsg) dtv%c
END SUBROUTINE
END MODULE
PROGRAM p
USE m
IMPLICIT NONE
character(len=4), dimension(3) :: buffer
TYPE(t) :: x
NAMELIST /nml/ x
x = t('a')
WRITE (buffer, nml)
print *, buffer
END
This test case prints:
a
&NML /
It seems that DTIO namelist output does not work on internal units (i.e. when
writing to a string): The second line is the output of the buffer, which is
missing the 'a'. The latter appears in a separate line. Apparently it is
written to std output instead of the buffer?!?
More information about the Gcc-bugs
mailing list