一、the data statement
这个data statement,就像是赋值语句。
data list-of-variables/ list-of-values/, …
三个点意味着这是可以重复的。
integer m,n
real x,y
data m/10/, n/20/, x/2.5/, y/2.5/
上述程序也可以写成
integer m,n
real x,y
data m, n/10, 20/, x, y/2*2.5/
2*2.5就是赋值相同的数值到同一个变量中去。
上述赋值语句等同于,
integer m, n
real x, y
m = 10
n =20
x=2.5
y=2.5
data statement 只在程序开始之前执行一次,因此the data statements主要用于主程序而不是在subroutines。data statements还可以用于初始化全零数组,当程序开始时。
real A(10, 20)
data A/200*0.0/
一些编译器会在编译的时候自动初始化数组。但不是所有的都这样。
此外,你还可以把数组初始化为其他的值,而不是0.你甚至可以初始化单个的元素。
data A(1, 1 )/12.5/, A(2, 1)/-3.33/
你甚至可以列出来所有的值,对于一个小数组来说。
integer v(5)
real B(2 ,2)
data v/10, 20, 30, 40, 50/, B/1.0, 2.0, 3.0, 4.0/
二、the block data statement
the data statement不能够被用于common block的变量赋值。这里有一个特殊的subroutine,叫做block data.
block data
integer nmax
parameter (nmax=20)
real v(nmax), alpha, beta
common /vector/v,alpha,beta
data v/20*100.0/, alpha/3.14/, beta/2.71/
end
write语句
wirte (*, *) 'The answer is ', x //WRITE 会把所有()之后的变量都打印出来
write (*,'(A, F8.3)') 'The answer is x = ', x //A指的是字符串的format, F8.3指的是x的format
write (*,990) 'The answer is x = ', x //上下的语句效果是一样的。
990 format (A, F8.3)