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