Obsolete Fortran statement functions

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


print *,f

print *,g(i,j,k)


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