Takuya Miyashita
This site
Web
Start:
*FORTRAN77 デバッグメモ [#d965f721]
古いコードに手をつけなければならなかった時にハマったこと...
** X0 は勝手に X (0) として解釈される?? [#xd43e9de]
#codeprettify(lang-fortran){{
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 という変...
無駄と思って X0 の宣言も X0(1)=X(N) の部分も削除したら,...
代わりに以下のように修正すると,結果変わらず実行できた.
#codeprettify(lang-fortran){{
REAL :: X(0:76), Y(0:76), DS(0:76)
X(0)=X(N)
Y(0)=Y(N)
DS(0)=DS(N)
}}
どういうことなのか全くわからんが, 上記の処理では X0(1) ...
X0は配列の要素が1つしかないのに,ここではあえてX0(1)と配...
~
**サブルーチンへの配列の渡しがサブルーチン内の宣言と違う...
以下のように subroutine の中で配列を宣言していたとして
#codeprettify(lang-fortran){{
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 するときにその配列のサイズではない変数を引数としたと...
#codeprettify(lang-fortran){{
CALL HOGE(F(1:2,M), M, G(2,1), 1)
}}
というときには,コンパイラによって挙動が変わる.~
曖昧なことをしているのでおかしな挙動をしても当たり前だが...
見つけたらなるべく修正したほうがよい.
End:
*FORTRAN77 デバッグメモ [#d965f721]
古いコードに手をつけなければならなかった時にハマったこと...
** X0 は勝手に X (0) として解釈される?? [#xd43e9de]
#codeprettify(lang-fortran){{
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 という変...
無駄と思って X0 の宣言も X0(1)=X(N) の部分も削除したら,...
代わりに以下のように修正すると,結果変わらず実行できた.
#codeprettify(lang-fortran){{
REAL :: X(0:76), Y(0:76), DS(0:76)
X(0)=X(N)
Y(0)=Y(N)
DS(0)=DS(N)
}}
どういうことなのか全くわからんが, 上記の処理では X0(1) ...
X0は配列の要素が1つしかないのに,ここではあえてX0(1)と配...
~
**サブルーチンへの配列の渡しがサブルーチン内の宣言と違う...
以下のように subroutine の中で配列を宣言していたとして
#codeprettify(lang-fortran){{
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 するときにその配列のサイズではない変数を引数としたと...
#codeprettify(lang-fortran){{
CALL HOGE(F(1:2,M), M, G(2,1), 1)
}}
というときには,コンパイラによって挙動が変わる.~
曖昧なことをしているのでおかしな挙動をしても当たり前だが...
見つけたらなるべく修正したほうがよい.
Page:
Edit with a page name which already exists