2017-05-24 37 views
0

我试图在Fortran中执行一个命令,因为我们的集群使用旧的编译器,所以我不能使用execute_command_line。所以我想切换到系统:GFortran不知道系统()

succ = system("zip -0q " // zipfile & 
          // " " // npy_name) 
    if(succ /= 0) then 
     write (*,*) "Can't execute zip command" 
    endif 

对于IFort我可以使用:

USE IFPORT 

,它工作正常。 GFortran不知道这个库(因为它是英特尔的),所以我把它注释掉,然后我得到:

~/NPY-for-Fortran/src/npy.f90:52:15: 

     succ = system("rm " // npy_name) 
       1 
Error: Function ‘system’ at (1) has no IMPLICIT type 

我如何在命令行下执行命令,使得它适用于旧&新的编译器,如以及英特尔& GNU?如果你需要一个完整的工作环境,这是整个的资源文件:

https://github.com/MRedies/NPY-for-Fortran.git

+0

我一直使用它作为子程序,'call system(..)'。 FWIW。 – agentp

+0

@agentp - 你可以“调用”它,或者你可以用它作为函数返回系统命令的返回值。 –

+0

在系统不可用之前,您必须回到gfortran 4.1。在我的优先级列表中支持一个旧/有限的版本不会太高。 – francescalus

回答

1

系统处于GFortran GNU扩展标准的一部分,所以你必须要使用标准(而不是性病= f95中,例如)。

gfortran -std=gnu file.f90 
+3

这是默认值。 –

+1

你甚至确定std = f95会删除它吗?扩展内在函数不符合标准,它们是允许的。 –

+1

是的,既然他没有显示他的编译器调用,我假设他的调用(或他的环境)改变了默认值。 –