Multi-File Program Structure
Module API Call
Separating Tools from Main
A module can hold reusable procedures while the main program focuses on choosing inputs and printing results.
Program
Play the program to choose a factor and call a procedure through the module API.
module_api_call.f90
Replay: real traced execution (multi-file project)
module scale_api
implicit none
contains
function scaled_count(count, factor) result(total)
integer, intent(in) :: count
integer, intent(in) :: factor
integer :: total
total = count * factor
end function scaled_count
end module scale_api
program module_api_call_demo
use scale_api, only: scaled_count
implicit none
integer :: factor
integer :: total
factor = 3
total = scaled_count(8, factor)
print '(I0, 1X, I0)', factor, total
end program module_api_call_demo
module scale_api
implicit none
contains
function scaled_count(count, factor) result(total)
integer, intent(in) :: count
integer, intent(in) :: factor
integer :: total
total = count * factor
end function scaled_count
end module scale_api
program module_api_call_demo
use scale_api, only: scaled_count
implicit none
integer :: factor
integer :: total
factor = 2
total = scaled_count(8, factor)
print '(I0, 1X, I0)', factor, total
end program module_api_call_demo
module scale_api
implicit none
contains
function scaled_count(count, factor) result(total)
integer, intent(in) :: count
integer, intent(in) :: factor
integer :: total
total = count * factor
end function scaled_count
end module scale_api
program module_api_call_demo
use scale_api, only: scaled_count
implicit none
integer :: factor
integer :: total
factor = 5
total = scaled_count(8, factor)
print '(I0, 1X, I0)', factor, total
end program module_api_call_demo
factor ← 3
18factor = 319total = scaled_count(8, factor)values this step3factortotal ← 24
18factor = 319total = scaled_count(8, factor)20print '(I0, 1X, I0)', factor, totalvalues this step24total3factorprint '(I0, 1X, I0)', factor, total
19 total = scaled_count(8, factor)20 print '(I0, 1X, I0)', factor, total21end program module_api_call_demooutput3 24values this step3factor24total
factor ← 2
18factor = 219total = scaled_count(8, factor)values this step2factortotal ← 16
18factor = 219total = scaled_count(8, factor)20print '(I0, 1X, I0)', factor, totalvalues this step16total2factorprint '(I0, 1X, I0)', factor, total
19 total = scaled_count(8, factor)20 print '(I0, 1X, I0)', factor, total21end program module_api_call_demooutput2 16values this step2factor16total
factor ← 5
18factor = 519total = scaled_count(8, factor)values this step5factortotal ← 40
18factor = 519total = scaled_count(8, factor)20print '(I0, 1X, I0)', factor, totalvalues this step40total5factorprint '(I0, 1X, I0)', factor, total
19 total = scaled_count(8, factor)20 print '(I0, 1X, I0)', factor, total21end program module_api_call_demooutput5 40values this step5factor40total
module
A module groups reusable procedures behind a named API.
use only
`use scale_api, only: scaled_count` imports one public procedure.
main program
The program chooses inputs and delegates the calculation.