2015-04-28 3 views
0

Попытка изучить Fortran для проекта. В очень простой программе я получаю недопустимый символ ошибка.недопустимый символ по имени 1

program foo 
    implicit none  
    integer :: n_samp 
    integer :: samp_len 
    integer :: x_len 
    integer :: y_len 
    n_samp=2 
    samp_len=2 
    y_len=11 
    x_len=2 
    real(8),dimension(n_samp,samp_len,y_len,x_len)=Yvec 
end program foo 

ошибка генерируется GFORTRAN

t.f90:11.12:

real(8), dimension(n_samp,samp_len,y_len,x_len)=Yvec 
     1 

Error: Invalid character in name at (1)

Что является причиной этой ошибки?

ответ

2

Правильный синтаксис

real(8), dimension(n_samp,samp_len,y_len,x_len) :: Yvec 

:: является обязательным при определении любых атрибутов (как dimension в вашем случае).

Как указывает @AlexanderVoigt, вся декларация переменной должна быть помещена в часть объявления кода, то есть в начале.

Я не рекомендую использовать real(8), потому что это не так точно, 8 может означать что угодно, это индекс таблицы видов, а разные компиляторы могут иметь что-то другое на месте 8 в этой таблице. См. Fortran 90 kind parameter

+0

Кроме того, декларации не должны быть в основном корпусе! –

+0

Правильно, я пропустил предыдущие строки. –

+0

Mhm ... Может быть, мы должны объединить наши сообщения! –

2

Это просто: вам не разрешено иметь декларации в основном корпусе (то есть после некоторых инструкций)! Вместо этого вы должны использовать параметры:

program foo 
    implicit none  
    integer,parameter :: n_samp=2 
    integer,parameter :: samp_len=2 
    integer,parameter :: x_len=11 
    integer,parameter :: y_len=2 
    real(8),dimension(n_samp,samp_len,y_len,x_len) :: Yvec ! Add. typo here 
end program foo 
+0

@ alexander в моем фактическом коде Я использую объявления, как вы определили. Спасибо за ввод. – ashwinids

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