小编Iva*_*nko的帖子

将非连续参数传递给 Fortran 过程中的连续虚拟数组

最近,我在处理具有该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)

fortran contiguous fujitsu-fortran

3
推荐指数
1
解决办法
535
查看次数

标签 统计

contiguous ×1

fortran ×1

fujitsu-fortran ×1