我有两组全局变量,每组全局变量都存储在一个名为common
的块中,如下所示:
integer :: x1, y1, z1, x2, y2, z2
common/vars/ x1, y1, z1
common/vars/ x2, y2, z2
我想使用这些变量来做两件事:
integer :: a(3) = (/ x1, y1, z1 /), b(3) = (/ x2, y2, z2 /)
定义的数组x1 = x2
,y1 = y2
和z1 = z2
。但是,在实际代码中,每组中有3个以上的变量。因此,我希望能够使用循环执行此操作。在C / C ++中,我可以通过增加指针来轻松地做到这一点。但是,指针不能像Fortran那样工作。有什么办法可以做到这一点?
答案 0 :(得分:0)
不知道您的Fortran编译器支持什么,但是这里有一些使用DEC Fortran-77的想法(技巧)。
STRUCTURE /MY_STRUCT/ UNION MAP INTEGER X1, Y1, Z1, X2, Y2, Z2 ENDMAP MAP INTEGER A(3), B(3) ENDMAP ENDUNION ENDSTRUCTURE COMMON /VARS/ XYZZY RECORD /MY_STRUCT/ XYZZY
CALL MY_SUB( X1 ) [...] SUBROUTINE MY_SUB( A ) INTEGER A(3)