Hello
I built a test code using the tutorial as a template:
winapp
module schwarzschildmodule
use clrwin
implicit none
real(kind=2) :: mass = 1.0
real(kind=2), parameter :: sol = 1.989e30 ! 1 solar mass in kg
real(kind=2), parameter :: velocity_of_light = 2.99792458e8 ! m/s
real(kind=2), parameter :: gravitational_constant = 6.67430e-11 ! m^3 kg^1 s^2
character(50) :: str = ''
contains
function Schwarzschild_radius(mass) result(Rs)
real(kind=2), intent(in) :: mass
real(kind=2) :: Rs
Rs = 2 * gravitational_constant * mass / velocity_of_light**2
end function Schwarzschild_radius
integer function calculate_radius()
implicit none
real(kind=2) :: SRadius
if (mass <= 0) then
str = 'Mass must be positive!'
else
SRadius = Schwarzschild_radius(mass * sol)
write(str, '('Schwarzschild radius: ', F15.5, ' meters')') SRadius
end if
call window_update@(str)
calculate_radius = 1
end function calculate_radius
integer function about()
implicit none
integer :: iw
iw= winio@('%ca[about Schwarzschild calculator]&')
iw= winio@('%fn[times new roman]%ts%bf%cnSchwarzschild Radius Calculator&', 2.0d0)
iw= winio@('%ts%4nl&', 1.0d0)
iw= winio@('%cnProgram to calculate Schwarzschild radius for a given mass in solar masses%2nl&')
iw= winio@('%ts%tc%cn%bfclearwin+&', 1.5d0, rgb@(255,0,0))
iw= winio@('%tc%sf%2nl%cnby&', -1)
iw= winio@('%2nl%cnSalford Software&')
iw= winio@('%2nl%cn%9`bt[ok]')
about = 1
end function about
end module schwarzschildmodule
!==================================================================
program schwarzschild_calculator
use schwarzschildmodule
implicit none
integer :: iw
iw= winio@('%ca[Schwarzschild Radius Calculator]&')
iw= winio@('%mn[&file[e&xit]]&', 'exit')
iw= winio@('%mn[&help[&about Schwarzschild calculator]]&', about)
iw= winio@('%il&', 0, 1000)
iw= winio@('Mass in solar masses: %rf&', mass)
iw= winio@('%ta%`^bt[Calculate Radius]&', calculate_radius)
iw= winio@('%2nl%tc[red]%ob%42st%cb', str)
end program schwarzschild_calculator
How can I add several function outputs to the final output? Is it a call back function for each module function, and is there an easy way of grouping things to avoid repetition?
Lester