2013-11-01 4 views
1

글로벌 값을 사용하고 싶지는 않습니다. 큰 프로그램에서는 위험합니다. 코드는 다음과 같습니다.서브 루틴에서 값을 반환하는 방법

어떻게 이런 식으로 서브 루틴을 사용할 수 있습니까? 나는 깃발을 반환하는 것을 생각하고 있었지만 나는 세계적인 가치를 사용할지도 모른다. 누구든지 아이디어가 있습니까? 마찬가지로

답변

2

subroutine test(input, flag) 
    integer, intent(in) :: input 
    logical, intent(out) :: flag 
    flag = input>=0 
end subroutine 

call test(3,myflag) 

설정합니다 myflag 참고

.true.

    서브 루틴은 자신의 인수 목록을 통해 값을 반환
  • ;
  • intent 절을 사용하면 서브 루틴이 인수를 사용하여 수행 할 수있는 작업을 컴파일러에 알릴 수 있습니다.
  • 예제는 매우 간단하며 필요에 맞게 조정할 수 있습니다.
2

또한 함수를 사용하여 수행 할 수도 있습니다.

logical function has_key(id) 
    integer, intent(in):: id 
    has_key = mod(id,2) .eq. 0 
end function has_key 

program main 
    do ii = 1, 4 
     if(has_key(ii)) 
     print *, ii, ' has key' 
     else 
     print *, ii, ' no key' 
     end if 
    end do 
end program 
+0

답변을 주셔서 감사합니다!하지만 어떤 이유로 프로그램이 없기 때문에 어떤 이유로 든 다른 프로그래밍 언어와 연결하려고합니다. – Xiao

관련 문제