Fortran 77 statement functions were thankfully made obsolete by Fortran 95 standard. Statement functions are not anonymous functions. In most cases, one should simple use standard functions instead of confusing statement functions. Other use cases are addressed by the polymorphism enabled from Fortran 2003 forward and/or pointers.
Example: Replace Fortran statement function with a standard function.
program st integer :: f,i,j,k,n ! obsolete statement function (don't use) f(n) = n+(i*j)**k i=2 j=3 k=4 print *,f print *,g(i,j,k) contains integer function g(n,i,j,k) ! use this instead of statement function integer, intent(in) :: n,i,j,k g = n+(i*j)**k end function g end program