最近,我在处理具有该contiguous
属性的虚拟数组的子程序时遇到了 Fujitsu Fortran 2.0.0 版的意外行为。
我已将问题简化为一个简单的示例,如下所示:
program test
INTEGER, DIMENSION(:,:), ALLOCATABLE :: t
INTEGER :: i, j
ALLOCATE(t(3,3))
DO i = 1, 4
DO j = 1, 4
t(i,j) = i*j
!!PRINT *, t(i,j)
END DO
END DO
CALL fun(t(2,1:4:2))
DEALLOCATE(t)
CONTAINS
SUBROUTINE fun(arg)
! Contiguous dummy argument arg
INTEGER, CONTIGUOUS :: arg(:)
PRINT *, arg(2)
END SUBROUTINE
end program test
Run Code Online (Sandbox Code Playgroud)
这段代码可以通过 gfortran(GNU Fortran (GCC) 6.3.0)成功编译,但在使用 Fujitsu Fortran 编译器(如上所述)的集群上失败,给出以下错误代码:
"test_contiguous.f90", line 13: The actual argument number 1 of …
Run Code Online (Sandbox Code Playgroud)