다른 서브 루틴에서 서브 루틴으로 값을 전달하는 방법을 이해하려고합니다.Fortran에서 서브 루틴으로 매개 변수 전달하기
나는 코드가 있습니다
program pg
call sub()
end
subroutine sub()
character :: P(12,12)
character :: D(20), N(26), userInput
integer :: A,B
A = 5
B = 2
userInput = "hello"
call test(P,D,N,userInput,A,B)
end subroutine
subroutine test(P,D,N,userInput,A,B)
end subroutine test
을하지만 그 날의 경고를 제공합니다, 말할 것도없고 만약 내가이 경고를 제거하는 방법을 정확히 모르겠어요
Warning: Type mismatch in argument 'p' at (1); passed CHARACTER(1) to REAL(4)
을 서브 루틴 호출이 정확합니다 (구문 현명한). 어떤 도움이라도 대단히 감사 할 것입니다.
서브 루틴'test'를 완료해야합니다. 그곳에는 인수의 유형을 선언하지 않았으므로 기본 입력 규칙이 사용됩니다. 컴파일러가 인터페이스를 확인하고 일치하지 않는 것처럼 보이는 것 같습니다. – francescalus
저는 Fortran을 처음 보았습니다. 그곳에서 논쟁의 유형을 어떻게 선언 할 수 있습니까? 나는 실제로 그렇게하는 법을 실제로 모른다. – werrer
아마도 대답이 너무 광범위 할 수 있지만 [documentation] (http://stackoverflow.com/documentation/fortran/1106/procedures-functions-and-subroutines#t=20170206030408357924) 도움이 될 수 있습니다. – francescalus