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
|
module procedure_01_module
implicit none
abstract interface
integer function fn(n)
integer, intent(in) :: n
end function
end interface
contains
integer function plus(f, x)
procedure(fn) :: f
integer, intent(in) :: x
plus = f(x+4)
end function
end module
program procedure_01
use procedure_01_module, only: plus
implicit none
integer :: i
i = plus(myf, 5)
print *, i
if (i /= 18) error stop
contains
integer function myf(n)
integer, intent(in) :: n
myf = 2*n
end function
end program
|