2017-12-19 55 views
1

레거시 포트란 코드를 fort77으로 컴파일하려고합니다.이전 포트란 코드 컴파일 구문 오류

Error on line XXX: syntax error 

라인 XXX 읽기 :

INTEGER MAXF, MAXC 
    PARAMETER (MAXF=400, MAXC=20) 

내가 제거하는 경우 : MAXF과 함께 위의 몇 줄을 정의

CHARACTER(LEN=10) TREE(2,MAXF) 

을 명령 :와

fort77 -c leg_code.f leg_code.o 

실패 (LEN=10), 코드는 문제없이 컴파일됩니다.

누구든지이 오류가 발생하는 이유를 알고 계십니까? 길이 (10)의 캐릭터의 등급 2 어레이 선언 코멘트에 명시된 바와 같이

+1

시도 포트란 77에서 유효합니다 : 문자 (10) 나무 (2, maxf) 또는 현대 Fortran 컴파일러 (> = f90)로 컴파일 –

+1

코드가 lesst Fortran 90에 있고 Fortran 77 컴파일러를 사용하고있는 것 같습니다. –

+0

그것은 다소 오래된 코드 였으므로 컴파일해야한다고 생각했습니다. 현대 컴파일러를 사용하려고 생각하지 않았습니다. 나는'gfortran'으로 시도했지만 아무런 문제없이 일했습니다. 응답을받을 수 있도록 의견을 제출해 주시겠습니까? 둘 다 감사합니다! – Gabriel

답변

2

, 포트란 (77)이 형태

CHARACTER(LEN=10) TREE(2,MAXF) 

유효하지 선언문은, 포트란 표준 포트란에 도입 90 개정.

포트란 77

CHARACTER*10 TREE(2,MAXF) 

또는

CHARACTER TREE(2,MAXF)*10 

이 요구되는 대안적인 형태와 같은 변수를 선언. 간단히

CHARACTER TREE(2,MAXF) 

길이가 1 문자의 배열로 변수를 선언에서와 같이, (len=10)을 제거하지만,이 단순히

+0

이전에 변형 된'CHARACTER TREE * 10'에 노출 된 것을 기억하지 못합니다. 아직 f77 –

+0

@ aka.nice에 대해 배우기를 좋아합니다.'character x * 10' 형식은 여전히 ​​최신 Fortran에 있습니다. 사실, 그것은 여전히 ​​유용합니다 :'character (len = 27) x, y * 10, z'와 같은 문자 길이 선언을 오버라이드하는 유일한 방법입니다 (배열 크기 선언을 오버라이드 (override) 12) :: a, b (5), c'). – francescalus