**manual svn** [[http://svnbook.red-bean.com/en/1.1/ch03s05.html]] ====== Pointers on functions and subroutines in Fortran ====== === It works with both ifort 10 and gfortran-4.4 === ===== example 1: main.f90 ===== module HelloWorld procedure(), pointer :: ptr contains subroutine Hello1() print *,'Ahoj' end subroutine subroutine Hello2(a) integer, intent(in) :: a print *,'Nazdar',a end subroutine end module program main use HelloWorld implicit none ptr => Hello1 call ptr ptr => Hello2 call ptr(2) end program ==== output: ==== zdenka@pc209:~/simulations/fireball/ptr_func$ ifort -c main.f90 -o main.o;ifort main.o -o test;./test Ahoj Nazdar 2 ===== Example 2: main.f90 ===== module HelloWorld procedure(Hello1), pointer :: ptr contains subroutine Hello1(a,b) integer, intent(in) :: a real, intent(in) :: b print *,'Ahoj',a,b end subroutine subroutine Hello2(a,b) integer, intent(in) :: a real, intent(in) :: b print *,'Nazdar',a,b end subroutine end module program main use HelloWorld ptr => Hello1 call ptr(1,1.0) ptr => Hello2 call ptr(2,2.0) end program ==== output ==== zdenka@pc209:~/simulations/fireball/ptr_func$ ifort -c main.f90 -o main.o;ifort main.o -o test;./test Ahoj 1 1.000000 Nazdar 2 2.000000 ====== Links - new features in fortran 95/2003: ====== [[ftp://ftp.nag.co.uk/sc22wg5/N1601-N1650/N1648.pdf|The New Features of Fortran 2003]] [[http://www-users.york.ac.uk/~mijp1/COL/fortran_2003.pdf|Fortran 2003: the latest Fortran Standard]]