fortran 中的数据语句
Data Statement in fortran
我尝试用 fortran 写一些数据...
program Problem
DIMENSION X(8), W(8)
DATA X /0.0950125098D0, 0.2816035507D0, 0.4580167776D0, 0.6178762444D0
+ , 0.7554044083D0, 0.8656312023D0, 0.9445750230D0, 0.9894009349D0/
DATA W /0.1894506104D0, 0.1826034150D0, 0.1691565193D0, 0.1495959888D0
+ , 0.1246289712D0, 0.0951585116D0, 0.0622535239D0, 0.0271524594D0/
D = 0.D0
DO NJ=1,8
D = D + X(NJ) + W(NJ)
ENDDO
write(*,*) D
end
但我总是在 (1)
处收到错误消息 Unexpected attribute declaration statement
有人知道为什么吗?
正如其他人所说,您应该使用新的 Fortran 标准。如果这样做,您可以只删除用于指示续行的“+”(应该在第 6 列中),而是在应该继续的行的末尾添加一个符号“&”。
然后程序编译运行。但是由于 X 和 W 是单精度,因此您在数据语句中使用了太多数字。使用隐式 none 并声明所有变量。并获得一本教科书。
您在下方找到了允许编译的代码的小更新:
program Problemless
dimension X(8), W(8)
data X /0.0950125098D0, 0.2816035507D0, 0.4580167776D0,
+ 0.6178762444D0, 0.7554044083D0, 0.8656312023D0,
+ 0.9445750230D0, 0.9894009349D0/
data W /0.1894506104D0, 0.1826034150D0, 0.1691565193D0,
+ 0.1495959888D0, 0.1246289712D0, 0.0951585116D0,
+ 0.0622535239D0, 0.0271524594D0/
D = 0.D0
do NJ=1,8
D = D + X(NJ) + W(NJ)
enddo
write(*,*) D
end
您的代码以 Fixed-source 形式编写(请参阅 Fortran standard 的第 6.3.3 节)。这意味着您不能拥有第 72 列以外的任何内容。我所做的只是在上面更正此问题。
如果你正在学习fortran,我建议停止使用固定格式并开始使用自由格式。
此 post
不需要投票
我尝试用 fortran 写一些数据...
program Problem
DIMENSION X(8), W(8)
DATA X /0.0950125098D0, 0.2816035507D0, 0.4580167776D0, 0.6178762444D0
+ , 0.7554044083D0, 0.8656312023D0, 0.9445750230D0, 0.9894009349D0/
DATA W /0.1894506104D0, 0.1826034150D0, 0.1691565193D0, 0.1495959888D0
+ , 0.1246289712D0, 0.0951585116D0, 0.0622535239D0, 0.0271524594D0/
D = 0.D0
DO NJ=1,8
D = D + X(NJ) + W(NJ)
ENDDO
write(*,*) D
end
但我总是在 (1)
处收到错误消息 Unexpected attribute declaration statement有人知道为什么吗?
正如其他人所说,您应该使用新的 Fortran 标准。如果这样做,您可以只删除用于指示续行的“+”(应该在第 6 列中),而是在应该继续的行的末尾添加一个符号“&”。 然后程序编译运行。但是由于 X 和 W 是单精度,因此您在数据语句中使用了太多数字。使用隐式 none 并声明所有变量。并获得一本教科书。
您在下方找到了允许编译的代码的小更新:
program Problemless
dimension X(8), W(8)
data X /0.0950125098D0, 0.2816035507D0, 0.4580167776D0,
+ 0.6178762444D0, 0.7554044083D0, 0.8656312023D0,
+ 0.9445750230D0, 0.9894009349D0/
data W /0.1894506104D0, 0.1826034150D0, 0.1691565193D0,
+ 0.1495959888D0, 0.1246289712D0, 0.0951585116D0,
+ 0.0622535239D0, 0.0271524594D0/
D = 0.D0
do NJ=1,8
D = D + X(NJ) + W(NJ)
enddo
write(*,*) D
end
您的代码以 Fixed-source 形式编写(请参阅 Fortran standard 的第 6.3.3 节)。这意味着您不能拥有第 72 列以外的任何内容。我所做的只是在上面更正此问题。
如果你正在学习fortran,我建议停止使用固定格式并开始使用自由格式。
此 post
不需要投票