Fortran宣言ステートメントで変数を初期化すると、その変数は暗黙的にSAVE属性を受け取り、初期化式は1回だけ実行されます。
たとえば、次のプログラム
program test
implicit none
call foo()
call foo()
contains
subroutine foo ()
integer :: i = 0
i = i + 1
write(*,*) i
end subroutine foo
end program test
印刷します
1
2
これは他の多くの言語では異なるので、Fortran標準委員会がなぜこの動作を選択したのか疑問に思いました。
どうもありがとう!マイク