2018-01-11 Steven G. Kargl <kargl@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gfortran.dg / dtio_32.f03
blob1e55359e237466ee9445acee7a6c215cd420bc22
1 ! { dg-do run }
2 ! { dg-options="-w" }
3 ! PR fortran/79383
4 ! Contributed by Walt Brainerd <walt.brainerd at gmail dot com>
5 module dollar_mod
7    implicit none
9    private
11    type, public :: dollar_type
12       real :: amount
13    end type dollar_type
15    interface write(formatted)
16       procedure :: Write_dollar
17    end interface
19    public :: write(formatted)
21    contains
23       subroutine Write_dollar(dollar_value, unit, b_edit_descriptor, &
24       &  v_list, iostat, iomsg)
25          class(dollar_type), intent(in) :: dollar_value
26          integer, intent(in) :: unit
27          character(len=*), intent(in) :: b_edit_descriptor
28          integer, dimension(:), intent(in) :: v_list
29          integer, intent(out) :: iostat
30          character(len=*), intent(inout) :: iomsg
31          write(unit=unit, fmt="(f9.2)", iostat=iostat) dollar_value%amount
32       end subroutine Write_dollar
34 end module dollar_mod
36 program test_dollar
38    use :: dollar_mod  ! with this USE, same result
39    implicit none
41    type(dollar_type), parameter :: wage = dollar_type(15.10)
42    character(len=10) str
43    write(str, fmt="(DT)") wage
44    if (trim(adjustl(str)) /= '15.10') call abort
46 end program test_dollar