Clicky
Showing changes from revision #3 to #4:
(追記) Added (追記ここまで) | (削除) Removed (削除ここまで) | (削除) Chan (削除ここまで)(追記) ged (追記ここまで)
(削除) Posted (削除ここまで)(追記) This example was (追記ここまで)(削除) to (削除ここまで)(追記) posted (追記ここまで)(追記) to (追記ここまで)comp.lang.fortran (削除) . (削除ここまで)(追記) (追記ここまで)(追記) by (追記ここまで)(追記) "Simulate" (追記ここまで)(追記) on (追記ここまで)(追記) December (追記ここまで)(追記) 12, (追記ここまで)(追記) 2008. (追記ここまで)
module proc_component_example
type t
real :: a
procedure(print_int), pointer, (削除) & (削除ここまで)(削除)
(削除ここまで)nopass :: proc
end type t
abstract interface
subroutine print_int (arg, lun)
import
type(t), intent(in) :: arg
integer, intent(in) :: lun
end subroutine print_int
end interface
contains
subroutine print_me (arg, lun)
type(t), intent(in) :: arg
integer, intent(in) :: lun
write (lun,*) arg%a
end subroutine print_me
subroutine print_my_square (arg, lun)
type(t), intent(in) :: arg
integer, intent(in) :: lun
write (lun,*) arg%a**2
end subroutine print_my_square
end module proc_component_example
program main
use proc_component_example
use iso_fortran_env, only : output_unit
type(t) :: x
x%a = 2.71828
x%proc => print_me
call x%proc(x, output_unit)
x%proc => print_my_square
call x%proc(x, output_unit)
end program main