атрибутов.
исленная переменная, объявленная в модуле, используется в качестве глобальной переменной для определения размера связанных массивов в программе. Размер программы варьируется, поэтому размер массива является переменной, но не параметром. Это определяется в начале программы.
В следующем фрагменте кода,n
является глобальной переменной размера. Он объявлен в модуле и определен в начале основной функции / программы. Подобное использованиеn
в основной программе и подпрограмме, содержащейся в основной программе, для инициализации массива соответственно. Однако инициализация в основной программе вызывает ошибку: модуль или массив основной программы должны иметь постоянную ошибку формы, но инициализация в подпрограмме работает. Каков механизм, лежащий в основе этого различного подхода к непостоянным значениям, используемым в разных позициях?
module mod
implicit none
integer :: n
end module mod
program main
use mod
implicit none
integer :: b(n)
n = 5
b(:) = 1
print*, b(:)
call sub
contains
subroutine sub
integer :: a(n)
a = 10
print*, a
end subroutine sub
end program main