Fortran中是否需要DATA语句?

时间:2019-04-09 10:01:15

标签: fortran fortran90 fortran77 obsolete

我有点了解fortran中 data 语句的行为。但是我不知道是否有任何情况是首选还是应该避免

2 个答案:

答案 0 :(得分:1)

数据语句不是过时的。但是,自Fortran 95以来,它在可执行语句中的使用已被废弃。latest Fortran standard的附录B提供了废弃功能的详细信息。

  

B.3.5可执行文件中的DATA语句。语句排序   规则允许DATA语句在之后的程序单元中的任何位置出现   规格说明。定位数据的能力   可执行语句中的语句很少   使用,不必要和潜在的错误来源。

梅特卡夫(Metcalf),科恩(Cohen&Reid)和科恩&里德(Cohen&Reid)在现代Fortran解释的第140页(2011年的绿色版本,不是我没有的较新的红色版本)

  

我们建议使用类型声明语句而不是数据   语句,但仅在部分语句中使用数据语句   变量将被初始化。

考虑到其中有两位作者是WG5的成员(负责Fortran的开发---实际上,所有三位作者都是成员;我不确定Michael Metcalf),我们可以可以肯定地说,除非在程序单元中的可执行语句之前初始化变量的一部分,否则应避免使用数据语句。

答案 1 :(得分:1)

我个人喜欢data语句,因为用它进行变量的初始化比通过普通赋值更清楚。例如:

type gene
  character :: gene
  integer :: depth
  integer :: delta
end type

type(gene) :: pool(8)

! initializing in a data statement looks nicer in this case
data pool%gene  / '#', 'U', 'R',  '+',  '-',  '*',  '/',  '^'/
data pool%depth /  0 ,  0 ,  1 ,   2 ,   2 ,   2 ,   2 ,   2 /
data pool%delta /  1 ,  1 ,  0 ,  -1 ,  -1 ,  -1 ,  -1 ,  -1 /