FORTRAN77 デバッグメモ †古いコードに手をつけなければならなかった時にハマったことなど. X0 は勝手に X (0) として解釈される?? †REAL :: X0(1), X(76), Y0(1), Y(76), DS0(1), DS(76) X0(1)=X(N) Y0(1)=Y(N) DS0(1)=DS(N) というコードがあって,これ以降一度も X0, Y0, DS0 という変数が使われることはなかった. REAL :: X(0:76), Y(0:76), DS(0:76) X(0)=X(N) Y(0)=Y(N) DS(0)=DS(N) どういうことなのか全くわからんが, 上記の処理では X0(1) が勝手に X (0) の役割を果たしたということ?そんなことある? X0は配列の要素が1つしかないのに,ここではあえてX0(1)と配列のように宣言しているのがミソなのかもしれない. サブルーチンへの配列の渡しがサブルーチン内の宣言と違うとき †以下のように subroutine の中で配列を宣言していたとして SUBROUTINE HOGE(A, M, B, N) IMPLICIT NONE COMPLEX, INTENT(INOUT) :: A(75,M) INTEGER, INTENT(IN) :: M COMPLEX, INTENT(INOUT) :: B(75,N) INTEGER, INTENT(IN) :: N call するときにその配列のサイズではない変数を引数としたとき,例えば CALL HOGE(F(1:2,M), M, G(2,1), 1) というときには,コンパイラによって挙動が変わる. |