2017-05-24 71 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

是的,既然他沒有顯示他的編譯器調用,我假設他的調用(或他的環境)改變了默認值。 –