Functions can be written using several types of syntax
function name() integer name name = 42 end function
integer function name() name = 42 end function
function name() result(res) integer res res = 42 end function
Functions return values through a function result. Unless the function statement has a
result clause the function's result has the same name as the function. With
result the function result is that given by the
result. In each of the first two examples above the function result is given by
name; in the third by
The function result must be defined during execution of the function.
Functions allow to use some special prefixes.
Pure function means that this function has no side effect:
pure real function square(x) real, intent(in) :: x square = x * x end function
Elemental function is defined as scalar operator but it can be invoked with array as actual argument in which case the function will be applied element-wise. Unless the
impure prefix (introduced in Fortran 2008) is specified an elemental function is also a pure function.
elemental real function square(x) real, intent(in) :: x square = x * x end function