Multi-File Program Structure
Module Constant Use
Shared Settings
A small constants module lets related programs share named settings instead of repeating magic numbers.
Program
Play the program to choose an adjustment and combine it with a module constant.
module_constant_use.f90
module settings_mod
implicit none
integer, parameter :: base_limit = 10
contains
function adjusted_limit(extra) result(limit)
integer, intent(in) :: extra
integer :: limit
limit = base_limit + extra
end function adjusted_limit
end module settings_mod
program module_constant_use_demo
use settings_mod, only: base_limit, adjusted_limit
implicit none
integer :: extra
integer :: limit
extra =
limit = adjusted_limit(extra)
print '(I0, 1X, I0, 1X, I0)', base_limit, extra, limit
end program module_constant_use_demo
module settings_mod
implicit none
integer, parameter :: base_limit = 10
contains
function adjusted_limit(extra) result(limit)
integer, intent(in) :: extra
integer :: limit
limit = base_limit + extra
end function adjusted_limit
end module settings_mod
program module_constant_use_demo
use settings_mod, only: base_limit, adjusted_limit
implicit none
integer :: extra
integer :: limit
extra =
limit = adjusted_limit(extra)
print '(I0, 1X, I0, 1X, I0)', base_limit, extra, limit
end program module_constant_use_demo
module settings_mod
implicit none
integer, parameter :: base_limit = 10
contains
function adjusted_limit(extra) result(limit)
integer, intent(in) :: extra
integer :: limit
limit = base_limit + extra
end function adjusted_limit
end module settings_mod
program module_constant_use_demo
use settings_mod, only: base_limit, adjusted_limit
implicit none
integer :: extra
integer :: limit
extra =
limit = adjusted_limit(extra)
print '(I0, 1X, I0, 1X, I0)', base_limit, extra, limit
end program module_constant_use_demo
parameter
`integer, parameter :: base_limit = 10` names a shared constant.
shared setting
The program imports the constant and the helper that uses it.
single source of truth
Changing the module constant would update every caller.