数据块 Fortran 77 说明
Data block Fortran 77 clarification
我正在尝试访问一个数据块,它的定义方式如下
DATA NAME /'X1','X2','X3','X4','X5','X6','X7','X8','X9','10','11',00028650
1'12','13','14','15','16','17','18','19','20','21','22','23','24'/ 00028660
代码在纸上。请注意,这是一个旧代码,我唯一想做的就是了解数组是如何被索引的。我不是要编译它。
访问方式如下
I = 0
Loop
I = I + 1
write (06,77) (NAME(J,I),J=1,4) //this is inside a write statement.
end loop //77 is a format statement.
不确定它是如何编入索引的,如果你们能阐明一些信息,那就太好了。
语法 (expr, intvar=int1,int2[,int3])
广泛引用 隐含的 DO 循环 。有几个地方可能会发生这样的事情,input/output 语句就是这样一个地方。
一个隐含的 DO 循环使用 do 控制整型变量 intvar
计算表达式 expr
,按 int3
的步骤依次取值 int1
直到值 int2
是 reached/passed。这个循环控制与在 do 循环语句中找到的完全一样。
在问题的例子中,表达式是name(j,i)
,整型变量j
是循环变量,取值在1
和4
之间. [未提供步长 int3
,因此被视为 1
。] 因此输出语句与
完全相同
write(6,77) name(1,i), name(2,i), name(3,i), name(4,i)
正如我们应该注意到的那样,隐含循环的元素是按顺序展开的。 i
本身来自包含此输出语句的循环。
name
在这里可能指的是一个函数,但鉴于存在 data
语句初始化它,它必须以某种方式声明为 rank-2(字符)数组。初始化并不重要。
我正在尝试访问一个数据块,它的定义方式如下
DATA NAME /'X1','X2','X3','X4','X5','X6','X7','X8','X9','10','11',00028650
1'12','13','14','15','16','17','18','19','20','21','22','23','24'/ 00028660
代码在纸上。请注意,这是一个旧代码,我唯一想做的就是了解数组是如何被索引的。我不是要编译它。
访问方式如下
I = 0
Loop
I = I + 1
write (06,77) (NAME(J,I),J=1,4) //this is inside a write statement.
end loop //77 is a format statement.
不确定它是如何编入索引的,如果你们能阐明一些信息,那就太好了。
语法 (expr, intvar=int1,int2[,int3])
广泛引用 隐含的 DO 循环 。有几个地方可能会发生这样的事情,input/output 语句就是这样一个地方。
一个隐含的 DO 循环使用 do 控制整型变量 intvar
计算表达式 expr
,按 int3
的步骤依次取值 int1
直到值 int2
是 reached/passed。这个循环控制与在 do 循环语句中找到的完全一样。
在问题的例子中,表达式是name(j,i)
,整型变量j
是循环变量,取值在1
和4
之间. [未提供步长 int3
,因此被视为 1
。] 因此输出语句与
write(6,77) name(1,i), name(2,i), name(3,i), name(4,i)
正如我们应该注意到的那样,隐含循环的元素是按顺序展开的。 i
本身来自包含此输出语句的循环。
name
在这里可能指的是一个函数,但鉴于存在 data
语句初始化它,它必须以某种方式声明为 rank-2(字符)数组。初始化并不重要。