2017-05-24 9 views
0

私はFortranでコマンドを実行しようとしています。私たちのクラスタは古いコンパイラを使用しているため、execute_command_lineは使用できません。GFortranはsystem()を知らない

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

はのifortのために私は使用することができます:

USE IFPORT 

をし、それが正常に動作しますので、私は、システムへの切り替えをしようとしています。 (それはIntelのだから)のgfortranは、このライブラリを知らないので、私はそれをコメントアウトして、私が取得:

~/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ですか?あなたは完全な作業環境を必要とする場合、これは全体のsourcefileのである:

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

+0

私は常にサブルーチン 'call system(..) 'として使用しています。 FWIW。 – agentp

+0

@agentp - あなたはそれを "呼び出す"ことができますし、関数として使用してシステムコマンドの戻り値を返すこともできます。 –

+0

'system'を利用できないようにするには、gfortran 4.1に戻る必要があります。私の優先順位のリストで古い/限定されたバージョンをサポートしないバージョンをサポートします。 – francescalus

答えて

1

システムはのgfortranでのGNU拡張標準の一部であるので、あなたはその標準(とないSTD =のf95では使用する必要があり、例えば)。

gfortran -std=gnu file.f90 
+3

これはデフォルトです。 –

+1

あなたはstd = f95がそれを削除すると確信していますか?拡張機能の組み込み関数は標準に反していませんが、許可されています。 –

+1

ええ、彼はコンパイラ呼び出しを表示していないので、私は彼の呼び出し(または彼の環境)がデフォルトを変更すると仮定しています。 –

関連する問題