서브루틴을 이용하여 도분초를 도로 표시하기
PROGRAM Angle
IMPLICIT NONE
INTEGER :: NumDegrees, NumMinutes, NumSeconds
CHARACTER(1) :: Response
DO
WRITE (*, '(1X, A)', ADVANCE = "NO") "도, 분 및 초를 입력하시오(ex : 100, 30, 36) : "
READ *, NumDegrees, NumMinutes, NumSeconds
CALL PrintDegrees(NumDegrees, NumMinutes, NumSeconds)
WRITE (*, '(/ 1X, A)', ADVANCE = "NO") "더 하시겠습니까? (Y or N)? "
READ *, Response
IF (Response /= "Y") EXIT
END DO
CONTAINS
SUBROUTINE PrintDegrees(Degrees, Minutes, Seconds)
INTEGER, INTENT(IN) :: Degrees, Minutes, Seconds
PRINT '(1X, I3, " degrees", I3, " minutes", I3, " seconds" / 1X, "is equivalent to" / 1X, F7.3 " degrees")', &
Degrees, Minutes, Seconds, &
REAL(Degrees) + REAL(Minutes) / 60.0 + REAL(Seconds) / 3600.0
END SUBROUTINE PrintDegrees
END PROGRAM Angle
위 소스를 07_01_Angle.f95로 저장
컴파일 및 프로그램 테스트
'Programming > Fortran' 카테고리의 다른 글
핵반응기 차폐 모사(서브루틴 RANDOM_SEED, RANDOM_NUMBER) (0) | 2008.09.13 |
---|---|
극좌표로 직교좌표로 전환(값을 반환하는 SUBROUTINE) (0) | 2008.09.13 |
도로망의 경로 수 계산(Recursive, 재귀함수) (0) | 2008.09.09 |
온도변환(외부 함수에 대한 Interface 사용) (0) | 2008.09.09 |
온도 변환(External Function : 외부함수) (0) | 2008.09.09 |