1MODULE m 2 IMPLICIT NONE 3 4 TYPE :: t 5 CHARACTER :: c 6 CONTAINS 7 PROCEDURE :: write_formatted 8 GENERIC :: WRITE(FORMATTED) => write_formatted 9 END TYPE t 10CONTAINS 11 SUBROUTINE write_formatted(dtv, unit, iotype, v_list, iostat, iomsg) 12 CLASS(t), INTENT(IN) :: dtv 13 INTEGER, INTENT(IN) :: unit 14 CHARACTER(*), INTENT(IN) :: iotype 15 INTEGER, INTENT(IN) :: v_list(:) 16 INTEGER, INTENT(OUT) :: iostat 17 CHARACTER(*), INTENT(INOUT) :: iomsg 18 19 WRITE (unit, "(A)", IOSTAT=iostat, IOMSG=iomsg) iotype 20 END SUBROUTINE write_formatted 21END MODULE m 22 23PROGRAM p 24 USE m 25 IMPLICIT NONE 26 CHARACTER(25) :: str 27 28 TYPE(t) :: x 29 WRITE (str, "(DT'a''b')") x 30 if (str.ne."DTa'b") STOP 1 31END PROGRAM p 32