Предположим, у меня есть подпрограмма, которая принимает два массива в качестве входных данных. Один из них задано намерение (входящее), а другому задано намерение (выход). Второе извлекается из первого произвольным образом. Однако что, если я прохожу один и тот же фактический аргумент для обоих фиктивных аргументов? Как правило, результат не будет быть тем, что было задумано подпрограммой. См. Фрагмент кода ниже.
Проблема в том, что компилятор, похоже, не заботится, хотя я указал флаги намерения. Я использую Intel Visual Fortran Composer 12 со всей диагностикой. Есть ли лучший способ кодирования подпрограммы или какой-то другой параметр компилятора, который мне не хватает, чтобы сделать код более безопасным?
module foo
contains
subroutine sub_a()
implicit none
real::array(10,10)
call sub_b(array,array)
end subroutine
subroutine sub_b(array1,array2)
implicit none
real,intent(in)::array1(10,10)
real,intent(out)::array2(10,10)
!array2 is derived from array1 somehow
end subroutine
end module foo