【发布时间】:2017-05-24 17:25:59
【问题描述】:
我正在尝试在 Fortran 中执行命令,因为我们的集群使用旧的编译器,所以我不能使用 execute_command_line。因此我正在尝试切换到系统:
succ = system("zip -0q " // zipfile &
// " " // npy_name)
if(succ /= 0) then
write (*,*) "Can't execute zip command"
endif
对于 IFort 我可以使用:
USE IFPORT
而且效果很好。 GFortran 不知道这个库(因为它是 intels)所以我把它注释掉然后我得到:
~/NPY-for-Fortran/src/npy.f90:52:15:
succ = system("rm " // npy_name)
1
Error: Function ‘system’ at (1) has no IMPLICIT type
如何在命令行中执行命令,以便它在新旧编译器以及 Intel 和 GNU 上运行?如果你需要一个完整的工作环境,这是整个源文件:
【问题讨论】:
-
我一直用它作为子程序,
call system(..)。 FWIW。 -
@agentp -- 你可以“调用”它,也可以将它作为一个函数来返回系统命令的返回值。
-
在
system不可用之前,您必须返回到 gfortran 4.1。支持一个旧的/有限的版本在我的优先级列表中并不重要。 -
根据当前文档,它可以以任何一种方式使用,但我不知道旧编译器是否总是如此。
ifort不需要USE IFPORT顺便用子程序形式。 -
如果不使用 USE IFPORT,我的 ifort 版本 17.0.4 无法编译它。