A configuration value often starts with a default and is replaced only when an override is present.

Program

Play the program to change the override timeout and see the selected timeout.

config_defaults.f90
program config_defaults_demo
    implicit none
    integer :: default_timeout
    integer :: override_timeout
    integer :: timeout

    default_timeout = 20
    override_timeout = 
    timeout = default_timeout
    if (override_timeout > 0) timeout = override_timeout
    print '(I0, 1X, I0)', override_timeout, timeout
end program config_defaults_demo
program config_defaults_demo
    implicit none
    integer :: default_timeout
    integer :: override_timeout
    integer :: timeout

    default_timeout = 20
    override_timeout = 
    timeout = default_timeout
    if (override_timeout > 0) timeout = override_timeout
    print '(I0, 1X, I0)', override_timeout, timeout
end program config_defaults_demo
program config_defaults_demo
    implicit none
    integer :: default_timeout
    integer :: override_timeout
    integer :: timeout

    default_timeout = 20
    override_timeout = 
    timeout = default_timeout
    if (override_timeout > 0) timeout = override_timeout
    print '(I0, 1X, I0)', override_timeout, timeout
end program config_defaults_demo
default value `default_timeout` is the fallback when no override is active.
override A positive override replaces the default value.
selected config `timeout` is the final value used by later code.