2016-06-07 2 views
1

내가 포트란 (처음 사용자)의 매우 간단한 함수를 작성하는 것을 시도하고있다 :선언 변수 (포트란)

program Main 
    implicit none 
    integer function k(n) 
    integer, intent(in) :: n 
    k=n 
    end function k 
end program Main 

I 오류의 무리 얻을 :

integer function k(n) 
        1 
Error: Syntax error in data declaration at (1) 

    integer, intent(in) :: n 
          1 
Error: Unexpected data declaration statement at (1) 

    end function k 
    1 
Error: Expecting END PROGRAM statement at (1) 

    k=n 
    1 
Error: Symbol ‘k’ at (1) has no IMPLICIT type 

    k=n 
    1 
Error: Symbol ‘n’ at (1) has no IMPLICIT type 

무엇 내가 틀렸어? 나는 gfortran의 마지막 버전을 사용하고있다. 프로그램 블록의 로컬

+0

을 가질 수 이것을 사용하는 프로그램의 예를 제공하기 위해 예를

program Main implicit none contains integer function k(n) integer, intent(in) :: n k=n end function k end program Main 

를 들어, contains 문 다음에 넣어해야합니다 컴파일하는 방법과 사용하는 컴파일러의 버전에 대한 세부 사항을 제공합니다 (최신은 많은 것을 의미 할 수 있습니다)? 나는'gfortran file.f90'보다는'gfortran -c file.f90'을해야하거나 [mcve]를 제공해야한다고 생각합니다. –

+0

gfortran file.f90을 사용하고 있습니다. 나 또한 추가 된 -c를 시도했지만 작동하지 않았다. 제 컴파일러는 gfortran입니다. 6.1. 엘 캐피 탄. – odnerpmocon

+0

파일에 질문에 작성한 내용이나 그 이상의 내용이 포함되어 있습니까? 더 이상 문제가없는 이상 위의 내용을 컴파일 할 수 있다면 더 많은 것을 제공 할 수 있습니다. –

답변

4

선언 된 함수와 서브 루틴 수는

program Main 
    implicit none 
    integer :: myLocalN 
    myLocalN = 2 
    print*, "My local N is ", myLocalN 
    print*, "The value of this squared is", sq(myLocalN) 
contains 
    integer function sq(n) 
    integer, intent(in) :: n 
    sq=n*n 
    end function sq 
end program Main 
+0

감사합니다! 이제 k (3)라고 말하고 싶다면 어떻게해야합니까? 끝 기능 k 다음에 print *, k (3) 문을 추가하려고 시도했지만 오류가 발생합니다. (1) – odnerpmocon

+0

의 CONTAINS 섹션에 예상치 못한 WRITE 문 예를 들어 답을 편집했습니다. 본질적으로 메인 프로그램 문은'contains' 블록 앞에 와야합니다. –