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.