0
我在一个相当简单的代码中有一个简单的问题,但是我真的没有在几个小时后发现错误。这里的代码,发生问题的最小化版本:Fortran 95:数组函数返回。越界
SUBROUTINE Partial_KlassRKV(x,y,f,f_xMarge,f_yMarge)
USE DGL_Functions
IMPLICIT NONE
REAL :: x(:),y(:),f(:,:,:),f_xMarge(:,:),f_yMarge(:,:)
INTEGER :: i,j,k
REAL :: partial_fx(6,6)
DO k=1,size(f,3)
partial_fx=PartialCalc(x,y,f(:,:,k),f_xMarge,f_yMarge)
WRITE(*,*) 'Nach PartialCalc x'
STOP
END DO
...
MODULE DGL_Functions
CONTAINS
FUNCTION PartialCalc(x,y,f,f_xMarge,f_yMarge)
IMPLICIT NONE
REAL :: x(:),y(:),f(:,:),f_xMarge(:,:),f_yMarge(:,:)
REAL :: PartialCalc(6,6)
INTEGER :: i,j
DO i=1,size(PartialCalc,1)
DO j=1,size(PartialCalc,2)
PartialCalc(i,j)=i+j
END DO
END DO
WRITE(*,*) 'PartialCalc ',PartialCalc
END FUNCTION PartialCalc
它返回上次写入声明FUNCION PartialCalc但不是在写操作之后
partial_fx=PartialCalc(x,y,f(:,:,k),f_xMarge,f_yMarge)
在子程序
。在那一行有“数组下标越界”。我不明白这一点。这两个数组(partial_fx和PartialCalc)都使用dim(6,6)声明,并为每个PartialCalc(i,j)分配一个值...?
电贺intasys
PS:我是用柏拉图的f95与切克马特32
谢谢。更改调试器以赢得32调试解决了问题。以防万一任何人有类似的问题。 – intasys 2014-09-22 16:18:34