Interfaces and Optional Arguments
Optional Argument
Default Behavior
A dummy argument marked optional may be omitted by the caller. present checks whether it was supplied.
Program
Play the program to call one function with and without an optional multiplication factor.
optional_argument.f90
program optional_argument_demo
implicit none
integer :: base, doubled, tripled
base =
doubled = scale(base)
tripled = scale(base, 3)
print '(I0, A, I0)', doubled, " ", tripled
contains
function scale(value, factor) result(out)
integer, intent(in) :: value
integer, intent(in), optional :: factor
integer :: out
if (present(factor)) then
out = value * factor
else
out = value * 2
end if
end function scale
end program optional_argument_demo
program optional_argument_demo
implicit none
integer :: base, doubled, tripled
base =
doubled = scale(base)
tripled = scale(base, 3)
print '(I0, A, I0)', doubled, " ", tripled
contains
function scale(value, factor) result(out)
integer, intent(in) :: value
integer, intent(in), optional :: factor
integer :: out
if (present(factor)) then
out = value * factor
else
out = value * 2
end if
end function scale
end program optional_argument_demo
program optional_argument_demo
implicit none
integer :: base, doubled, tripled
base =
doubled = scale(base)
tripled = scale(base, 3)
print '(I0, A, I0)', doubled, " ", tripled
contains
function scale(value, factor) result(out)
integer, intent(in) :: value
integer, intent(in), optional :: factor
integer :: out
if (present(factor)) then
out = value * factor
else
out = value * 2
end if
end function scale
end program optional_argument_demo
optional
`optional` allows a dummy argument to be left out.
present
`present(factor)` is true only when the caller supplied `factor`.
result
`result(out)` names the function return variable.