2013-06-26 1 views
0

에 배열 길이 상속 된 구성 요소의 정수 값을 사용합니다. gfortran은 컴파일을 위해 n의 유형을 알고 싶어하지만, 제 생각에는 이미 상속되었습니다. (증명 : 내가 datafilledn을 다시 정의하면 gfortran이 복제에 대해 불평합니다.) 어떻게 작동시킬 수 있습니까?어떻게 내가하고 싶은거야 그 확장

참고 : this question에 따라 n을 할당 가능하다고 선언하고 gfortran이 분명히 Fortran2003의 len 특성을 지원하지 않기 때문에.

편집 : OK, 나중에 각각의 초기화 단계에서 allocatable 속성과 allocate으로 할 수 있음을 인정합니다.

답변

1

할당 가능/비 포인터 구성 요소의 경우 컴파일 타임에 사양을 평가할 수있는 구성 요소 배열 사양에 제약이 있습니다 (유형 개체 정의되고 있음). 특히, 스펙의 경계 값은 변수의 값에 의존하지 않아야합니다. 자세한 내용은 F2008의 C446을 참조하십시오.

데이터 프레임 유형의 일부 객체에있는 구성 요소 n은 변수입니다. sum(n)을 계산하려면 값이 필요합니다. 당신은 제약 조건을 위반하고 있습니다.

길이 유형 매개 변수는 컴파일러에서 지원하는 경우에도 스칼라 일 수 있습니다.

당신이 결론을 내렸던 것처럼, 할당 가능한 구성 요소를 사용하고 일종의 건설 절차에서 일을 정확하게 할당하는 것이 길이다.

+0

처음에는 'n'이 변수'intent (in) '인 경우'double precision, dimension (sum (n), d) :: x '선언이 프로 시저 내부에서 작동한다는 것에 놀랐습니다. 그래서 이것은 유형 선언에서도 작동 할 수 있다고 예민했습니다. 지금까지. –