2015-09-07 3 views
1

У меня есть подпрограмму файл следующим образомСинтаксическая ошибка в аргументах функции в Фортран

subroutine grids(Ngrids,gridsize,boundx,boundy,boundz,occmatrix,myid) 

    implicit NONE 

    integer   i,j,k,Ngrids, occmatrix(14,14,10) 
    integer   locx,locy,locz,myid 
    double precision gridsize,boundx,boundy,boundz 


    do i = 1, 14 
    do j = 1, 14 
     do k = 1, 10 
      occmatrix(i,j,k) = 0 
     enddo 
    enddo 
    enddo 

    open (13, file = 'grid_data.9deg')  
    write(*,'(A,i2)'),' READING GRID FILE ON PROC.....',myid 
    read(13,*) Ngrids,gridsize 
    read(13,*) boundx,boundy,boundz  
    do i = 1, Ngrids 
    read(13,*) locx, locy, locz 
    occmatrix(locx,locy,locz) = 1 
    enddo 
    close(13) 

    return 
end 

Это дает следующую синтаксическую ошибку при составлении

subroutine grids(Ngrids,gridsize,boundx,boundy,boundz,occmatrix,my 
                    1 
Error: Unexpected junk in formal argument list at (1) 

Раньше хорошо работать, прежде чем

+0

Как вы скомпилируете, какой суффикс имеет ваш файл? – haraldkl

+0

Что такое расширение вашего файла? В зависимости от расширения компилятор может игнорировать все остальное после определенного номера столбца. См. Http://stackoverflow.com/questions/24335487/syntax-error-in-call-statement-in-fortran – solalito

ответ

3

Я бы поверила, ваша линия длинная. Вы добавили новый аргумент? Ваш код выглядит как свободная форма, но, возможно, компилятор попытался применить фиксированную форму из-за суффикса .f в имени файла или что-то в этом роде. Убедите компилятор принять свободный форматированный исходный код (по параметрам компилятора или обычно суффикс .f90).

Даже в свободных отформатированных файлах вашей ширина линии ограничена, и вы должны разбить длинные строки, которые бы, например, выглядеть следующим образом:

subroutine grids(Ngrids,gridsize,boundx,boundy,boundz, & 
    &    occmatrix,myid) 

Если вы застряли с фиксированным форматом вам необходимо указать продолженную линию не пустой символ в колонке 6.

Вот как это выглядит в виде фиксированной:

 subroutine grids(Ngrids,gridsize,boundx,boundy,boundz, 
    &     occmatrix,myid) 

Пожалуйста больше не используйте фиксированную форму! Вместо этого измените свои файлы на конец .f90, большинство компиляторов распознают это для свободного форматированного кода.

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