2016-08-05 2 views
0

다음 코드는 이진 파일에서 온도 값을 읽으려고합니다. 나는 그것을 2 차원으로 믿지만 확실하지는 않습니다. 정확한 치수를 알지 못합니다. 내가 말하는 오류 : 배열에 대해 너무 적은 첨자가 지정되었습니다 'temp'.오류 : 배열에 대해 지정된 아래 첨자가 너무 적습니다.

INTEGER :: i, j 
REAL, DIMENSION(:,:), ALLOCATABLE :: temp 

OPEN(UNIT=8, FILE='Orbital_TB_bufr_v620.dat', IOSTAT=iostat) 
READ(unit=8,REC =1, IOSTAT=iostat) temp 

ALLOCATE (temp(i:j)) 
print *, temp 

CLOSE(8) 

파일의 모든 값을 읽고 싶습니다.

+1

IO는 작동하지 않지만 할당 오류가 발생합니다. temp를 2 차원으로 정의하지만 1 차원으로 할당하십시오. 2 차원 배열을 할당하려면'allocate (temp (i, j))'와 같은 것을 할 필요가 있습니다. – haraldkl

+1

배열을 할당하는 방법을 확인하십시오. 2D 배열이있어서 범위를 제공하면서 두 개의 확장을 제공해야합니다. 당신의 범위는 초기화되지 않은 변수'i'와'j'에 기초합니다. 읽은 후에 배열을 사용하기 전에 배열을 할당해야합니다. 독서를 위해서는 독서를 시도하기 전에 데이터를 파일로 작성한 방법에 대한 아이디어가 있어야합니다. 먼저 파일을 직접 액세스 파일로 열지 않고 직접 액세스 파일로 읽으려고합니다. 직접 액세스로 읽으려면 열기 동안'recl'을 제공해야합니다. – innoSPG

+0

현대 컴파일러 (2008+)에 대한 액세스 권한이 있습니까? 그렇다면 파일 단위 식별자를 하드 코딩하는 대신 newunit 지정자를 사용하십시오. – jlokimlin

답변

0

ALLOCATE (temp(i:j))은 하위 경계가 i이고 상한이 j 인 1D 배열을 할당합니다.

그러나 temp은 2 차원 배열 DIMENSION(:,:)으로 선언됩니다.

당신은 그것을 일관되게 만들어야합니다.

관련 문제