2013-02-15 2 views
0

이것은 쉬운 것이어야합니다. 왜 내 읽기 문에 구문 오류가 있는지 알 수 없습니다. 나는 파일 7477 라인을 가지고 있고 각 변수들이 각 라인에서 나의 포맷 지정과 일치하도록하고 싶다. 여기에 도움이 될 것입니다. 감사! 그러나 : 당신의 입력 파일에서 선을 보지 않고FORTRAN 90 - 입력 구문 오류

implicit none 

integer :: spe, flen = 7477, i 
real, dimension (7477):: wnum,s,A,abh 
character :: other 
integer :: lun = 11 

write(*,*) 'Opening File!' 
open(lun,file ='h2o_allbands',status = 'old',action ='read') 
write(*,*) 'Success!' 


17 format (1x,i2,3x,F9.6,1x,E9.3,1x,E9.3,F5.5,A120) 

do i = 1, 7477 
    read(lun,17) spe(i),wnum(i),s(i),A(i),abh(i),other 
    write(*,*) wnum(i) 
end do 
+0

'기타'는 단일 문자 또는 '문자 * (LEN = 120)'으로 만들려고 했습니까? – ja72

답변

0

입력 항목 목록에 spe(i)이 있습니다. spe은 배열로 선언되지 않으므로 컴파일러는 spe(i)이 정수 함수에 대한 참조라고 생각할 것입니다. 평범한 정수 함수의 결과를 읽을 수는 없습니다.

아마 spe을 배열로 선언해야합니까?

+0

알았어 .. 고마워! – user2036115

0

, 그것은 정확한 문제가 무엇인지 말하기 어렵다 모든

  • 첫째, 당신은 format 문을 사용하지 말아야 할 때 읽기 엔티티 (특별한 경우가 아니라면)를 사용하면 어떤 이유로 든 형식이 올바르지 않으면 모든 종류의 오류가 발생할 수 있습니다. 그래서 단지와 읽기 라인을 교체 : 모든 라인이 마지막 따로 따로 잘 읽을 경우

    read(lun,*) spe(i), wnum(i), s(i), A(i), abh(i), other 
    
  • , 당신은 마지막 줄의 끝에 줄 바꿈을 가지고 있는지 확인.

+0

흠. 형식 지정자를 사용하지 않으면 이것이 어떻게 작동하는지 보지 못합니다. 다음은 필요한 텍스트 파일의 첫 번째 줄 첫 부분입니다. 마지막 3 명은 함께 모입니다! 11 10.714931 2.528E-24 6.118E-06.0773.2324 – user2036115

+0

입력이 고정 된 형식이면 명시적인 형식이 훨씬 강력한 방법입니다. 목록 형식 지정에는 시간이 지남에 따라 (자신을 포함하여) 많은 것을 망 쳤던 아주 희미한 기능이 있습니다. 프로그램이 잘못된 입력으로 자동으로 수행하는 것보다 오류가 발생하는 것이 좋습니다. 프로덕션 코드에서 "자유 ​​형식"의 경우에도이를 피합니다. 사용자가 자신의 코드에서 행을 읽고 구문 분석하는 것이 더 편합니다. – IanH

+0

도움 주셔서 감사합니다. – user2036115

관련 문제