Определение размера массива в Fortran?

Я читаю количество строк и столбцов для матрицы «A» из файла «var_and_runs.txt», но он показывает ошибку компиляции — «неожиданный оператор объявления данных»

implicit none
integer i, var, runs
integer  rows, cols
open(unit = 30, file = 'var_and_runs.txt')
    read(30,*) cols,rows

INTEGER, DIMENSION(:, :), ALLOCATABLE :: A

ALLOCATE (A(rows, cols))

open (unit = 40, file = 'read_this.txt')

read(40,*) A
A = transpose(A)
do 80 i = 1,3             
print*, A(i,:)
80    continue
print*, A
end

Пожалуйста помоги!


person curious programmer    schedule 07.06.2016    source источник


Ответы (1)


У вас не может быть никаких объявлений переменных после исполняемых операторов. В вашем случае вы должны заменить

open(unit = 30, file = 'var_and_runs.txt')
  read(30,*) cols,rows

INTEGER, DIMENSION(:, :), ALLOCATABLE :: A

с

INTEGER, DIMENSION(:, :), ALLOCATABLE :: A
open(unit = 30, file = 'var_and_runs.txt')
  read(30,*) cols,rows

и, надеюсь, все должно работать нормально.

person d_1999    schedule 07.06.2016
comment
Спасибо, это решило мою проблему. - person curious programmer; 07.06.2016
comment
@curiousprogrammer Рад, что смог помочь, так как это ответило на ваш вопрос, было бы полезно, если бы вы могли принять лучший ответ, чтобы другие могли видеть, что проблема решена (см. meta.stackexchange.com/a/5235). - person d_1999; 07.06.2016