1! { dg-do run }
2!
3! PR 39630: [F03] Procedure Pointer Components with PASS
4!
5! found at http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/4a827e8ced6efb0f/884b9eca6d7e6742
6
7module mymod
8
9    type :: mytype
10        integer :: i
11        procedure(set_int_value), pointer :: seti
12    end type
13
14    abstract interface
15        subroutine set_int_value(this,i)
16            import
17            class(mytype), intent(inout) :: this
18            integer, intent(in) :: i
19        end subroutine set_int_value
20    end interface
21
22    contains
23
24    subroutine seti_proc(this,i)
25        class(mytype), intent(inout) :: this
26        integer, intent(in) :: i
27        this%i=i
28    end subroutine seti_proc
29
30end module mymod
31
32program Test_03
33    use mymod
34    implicit none
35
36    type(mytype) :: m
37
38    m%i = 44
39    m%seti => seti_proc
40
41    call m%seti(6)
42
43    if (m%i/=6) STOP 1
44
45end program Test_03
46