2013-02-15 6 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

hmm. Я не вижу, как это будет работать без использования спецификатора формата. Вот первая часть первой строки моего текстового файла с числами, которые мне нужны. Последние 3 соединены вместе! 11 10.714931 2.528E-24 6.118E-06.0773.2324 – user2036115

+0

Если ввод является фиксированным форматом, то явный формат является гораздо более надежным подходом. Список направленного форматирования имеет некоторые довольно неясные функции, которые со временем заставили многих (включая меня) - лучше получить ошибку, чем для вашей программы, которая будет работать тихо с плохим вводом. Я избегаю этого в производственном коде даже для материалов «свободного формата» - пользователям удобнее читать и разбирать строки в вашем собственном коде. – IanH

+0

ОК спасибо за помощь! – user2036115

Смежные вопросы