Как упоминалось в заголовке, у меня возникают проблемы при попытке передать часть массива в подпрограмму (называемую Example
, см. ниже) в Fortran 95.
Мой код имеет следующий макет:
PROGRAM Code
DOUBLE PRECISION, DIMENSION(72) :: Array1
!Method 1
CALL EXAMPLE(Array1)
!Method 2
CALL EXAMPLE(Array1(1:72))
END PROGRAM Code
SUBROUTINE EXAMPLE(Array1)
DOUBLE PRECISION, DIMENSION(72) :: Array1
END
Метод 1 (см. выше) работает нормально, однако при использовании метода 2 появляется сообщение об ошибке, в котором говорится, что этот аргумент слишком мал для заявленного размера. Если я объявил размер 72 и перешел от 1:72, почему это привело бы к указанной выше ошибке.
Причина, по которой я не могу использовать метод 1, заключается в том, что размер массива может измениться/часть массива, которую я передаю подпрограмме, может быть другой.
Например, я могу передать подпрограмме первые 36 элементов (т.е. 1:36), а затем передать последние 36 элементов (т.е. 37:72). Я также позаботился о том, чтобы изменить заявленный размер массива в EXAMPLE
соответственно, чтобы он соответствовал тому, что я ввожу.
Есть идеи, почему это не работает для меня?