• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォートランソースから端末コマンドを実行する方法)

フォートランソースから端末コマンドを実行する方法

このQ&Aのポイント
  • フォートランソースから端末コマンドを実行する方法について解説します。
  • フォートランのソースプログラムからOSのコマンドを起動する方法として、call system() 関数を使用します。ソースプログラムに call system("コマンド") の形式で記入し、コンパイルして実行します。実行時に指定されたコマンドが実行され、画面上に結果が表示されます。
  • call system() の中のコーテーションはシングルまたはダブルのどちらでも指定できます。どちらの形式でも動作する場合がありますが、使用するFortranコンパイラやOSの仕様によって異なる場合もあります。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.2

>この場合、call system(" ")のコーテーションマーク内部はOSの端末からキーボード入力するコマンドは何でもOKなのでしょうか。 処理系(コンパイラ)依存ですが、dirが通るなら、その通りだと思います。 >cdは利きませんでした。実行中にいったんフォルダを変更することはできないのでしょうか。 できます。 call system("cd \fooo & dir") と、& で区切ってマルチステートメントにしてください。 >実行中にいったんフォルダを変更することはできないのでしょうか。 処理系依存ですが、カレントディレクトリ変更用のサブルーチンが用意されていないでしょうか? マニュアルやリファレンスを参照してください。 >また、call system() の中のコーテーションはシングル・ダブルのどちらが正しいでしょうか。どちらも動作するようではありますが。 文字列を囲む引用符と言うことなら、処理系依存ですが、どちらも使えるならそういうコンパイラだと言うことです。どちらが正しいとかはありません。

skmsk1941093
質問者

お礼

回答ありがとうございます。 処理系の説明を忘れていました。intel fortranでOSはWindowsあるいはLinuxです。OSが違うので仕様が違うかと思いますが、メーカは同じということですが。 このような処理(ソースから端末コマンドの投入)というのはFortran66などずいぶん前からあるのでしょうか。FortranはMS-DOSよりも古いはずなので。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.3

> このような処理(ソースから端末コマンドの投入)というのはFortran66などずいぶん前からあるのでしょうか。 Fortran66、Fortran90など言語の規格はOS独立ですので、OSのコマンドを実行する機能は無いです。処理系で独自のサブルーチンなどを用意しているのかと思います。 いずれにせよ、マニュアルやリファレンスを見てください。

すると、全ての回答が全文表示されます。
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

なぜ、fortranの質問をC・C++のカテゴリーでされるのかはわかりませんが >call system("dir") <-windowsでの例 これはOSのコマンドというより、シェル(WindowsNT系ではcmd.exe)を起動してシェルからコマンドを実行しています。 cdは、それを実行しているプログラムのカレントディレクトリを変更しますがcall system()ではシェルを起動してコマンドを実行しますからcdを実行しているのはシェルになり、シェルのカレントディレクトリが変更されます。 変更されるのはあくまで、それを実行したシェルのカレントディレクトリで、それを呼び出したfortranのプログラムには影響しません。 簡単な再現方法としてはコマンドプロンプトを起動し、cmd.exeを起動してcdでカレントディレクトリを変更してexitしてみてください。 cmd.exeを起動したコマンドプロンプトのカレントディレクトリは変わっていないはずですから。

skmsk1941093
質問者

お礼

回答ありがとうございます。 ソースプログラムをコンパイルして実行している場合のディレクトリと、call system(”cd abc”)でシェルが移動したディレクトリabcは無関係ということですね。確かに移動した先で自由にファイル処理などされたら大けがしそうです。 fortranの質問ですが、適当な質問先がないように思います。Cが一番ユーザーが多くて活発なのでfortranに覚えのある方の目にとまるかと思いました。その他などに質問すると回答してもらえないようでしたが。

すると、全ての回答が全文表示されます。

関連するQ&A