Clicky

Fortran Wiki
proc_component_example

Skip the Navigation Links | Home Page | All Pages | Recently Revised | Authors | Feeds | Export |

This example was 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

category: code

Revised on March 16, 2010 14:46:45 by Jason Blevins (75.178.9.182) (1187 characters / 0.0 pages)
Edit | Back in time (3 revisions) | See changes | History | Views: Print | TeX | Source | Linked from: Code, HowTo, Procedure pointers

AltStyle によって変換されたページ (->オリジナル) /