入力として 2 つの配列を受け入れるサブルーチンがあるとします。1 つはインテント (イン) が与えられ、もう 1 つはインテント (アウト) が与えられます。後者は、任意の方法で前者から導出されます。しかし、両方の仮引数に同じ実引数を渡すとどうなるでしょうか? 一般に、結果はサブルーチンによって意図されたものではありません。以下のコード スニペットを参照してください。
問題は、インテント フラグを指定したにもかかわらず、コンパイラが気にしていないように見えることです。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