1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
module procedure_02_module
implicit none
abstract interface
subroutine fn(n, y)
integer, intent(in) :: n
integer, intent(out) :: y
end subroutine
end interface
contains
integer function plus(f, x)
procedure(fn) :: f
integer, intent(in) :: x
call f(x+4, plus)
end function
end module
program procedure_02
use procedure_02_module, only: plus
implicit none
integer :: i
i = plus(myf, 5)
print *, i
if (i /= 18) error stop
contains
subroutine myf(n, y)
integer, intent(in) :: n
integer, intent(out) :: y
y = 2*n
end subroutine
end program
|