C_FUNLOC — Obtain the C address of a procedure ¶C_FUNLOC(x) determines the C address of the argument.
Fortran 2003 and later
Inquiry function
RESULT = C_FUNLOC(x)
| x | Interoperable function or pointer to such function. | 
The return value is of type C_FUNPTR and contains the C address
of the argument.
module x
  use iso_c_binding
  implicit none
contains
  subroutine sub(a) bind(c)
    real(c_float) :: a
    a = sqrt(a)+5.0
  end subroutine sub
end module x
program main
  use iso_c_binding
  use x
  implicit none
  interface
    subroutine my_routine(p) bind(c,name='myC_func')
      import :: c_funptr
      type(c_funptr), intent(in) :: p
    end subroutine
  end interface
  call my_routine(c_funloc(sub))
end program main
C_ASSOCIATED — Status of a C pointer, 
C_LOC — Obtain the C address of an object, 
C_F_POINTER — Convert C into Fortran pointer, 
C_F_PROCPOINTER — Convert C into Fortran procedure pointer