正如标题所说,真的。
有什么反对不使用停止,像这样:
PROGRAM myprog
.
. < do stuff >
.
END PROGRAM myprog
而不是使用显式停止,如下所示:
PROGRAM myprog
.
. < do stuff >
.
STOP
END PROGRAM myprog
我看到很多旧的fortran代码在STOP
声明之前有END PROGRAM
,但是它真的需要吗?
在我们的Cray机器上,在程序结束时有STOP
个字符,将字符串“STOP”写入STDERR,这有点烦人......
答案 0 :(得分:8)
代码
df %>% group_by(groupvar) %>%
do( {
model = kmeans(cbind(.$v1, .$v2), centers = 5)
data.frame(., fitted(model, methods = "centers"), cluster = model$cluster, row.names = NULL)
})
就现代Fortran中的程序返回值而言,是多余的。如果支持退出代码,则没有整数或字符停止代码的stop
end program
应向操作系统返回0退出代码。如果遇到stop
,则行为相同,向操作系统返回0。
程序输出出现差异。正如您所指出的那样,end program
会产生输出。标准(Fortran 2008 cl.8.4)说
当图像被STOP或ERROR STOP语句终止时,其停止代码(如果有)可用 以处理器相关的方式。如果在该图像上发出任何异常(14)信号,则处理器应发出a 警告,指示哪些异常发出信号;此警告应在指定的单位上 常数错误单元(13.8.2.8)。建议通过格式化输出使停止代码可用 到同一个单位。
这建议停止代码在标准错误上可用,这是stop
输出的来源。如果您已将停止代码提供给STOP
,则会以stop
输出。此外,如果存在浮点异常信令,您将获得详细说明该条件的标准错误的额外输出。
如果您不希望STOP
的其他输出并且不使用它来向操作系统返回非零错误代码,则可以从程序中省略它。
主程序的stop
,stop
结尾可能有历史原因,但我对FORTRAN66手册的简要略读并没有启发我。