PROGRAM subroutines ! ! Author: Br. David Carlson ! ! Date: April 2, 2008 ! ! This program prompts the user for an angle in degrees, it then ! finds and prints the angle in radians, along with the original ! degrees. IMPLICIT NONE REAL::ThetaRadians REAL::ThetaDegrees CALL GetAngle(ThetaDegrees) CALL DegreesToRadians(ThetaDegrees, ThetaRadians) CALL Print(ThetaDegrees, ThetaRadians) END PROGRAM !---------------------------------------------------------------------- ! Given: Nothing. ! Task: To have the user enter an angle in degrees. ! Return: Angle This angle entered by the user. !---------------------------------------------------------------------- SUBROUTINE GetAngle(Angle) IMPLICIT NONE REAL, INTENT(OUT)::Angle WRITE (*, *) 'Enter an angle (in degrees):' READ (*, *) Angle END SUBROUTINE !---------------------------------------------------------------------- ! Given: ThetaDegrees An angle in degrees. ! Task: To find the size of this angle in radians. ! Return: ThetaRadians The computed size of the angle in radians. !---------------------------------------------------------------------- SUBROUTINE DegreesToRadians(ThetaDegrees, ThetaRadians) IMPLICIT NONE REAL, INTENT(IN)::ThetaDegrees REAL, INTENT(OUT)::ThetaRadians ! Local variable: REAL::RadiansPerDegree RadiansPerDegree = ASIN(1.0) / 90.0 ThetaRadians = ThetaDegrees * RadiansPerDegree END SUBROUTINE !---------------------------------------------------------------------- ! Given: ThetaDegrees An angle in degrees. ! ThetaRadians The same angle in radians. ! Task: To print these two values with appropriate messages. ! Return: Nothing. !---------------------------------------------------------------------- SUBROUTINE Print(ThetaDegrees, ThetaRadians) IMPLICIT NONE REAL, INTENT(IN)::ThetaDegrees, ThetaRadians WRITE (*, 200) 'The angle in degrees is ', ThetaDegrees WRITE (*, 200) 'The angle in radians is ', ThetaRadians 200 FORMAT(' ', A, F16.5) END SUBROUTINE