2012-03-05 1 views
3

私のメイン実行可能ファイルを含むフォルダは、入力ファイル、出力ファイル、ソースファイルで非常に乱雑です。私はこれらのファイルのいくつかを実行可能ファイルとは別のディレクトリに移動したいが、それらにはまだアクセスできる。私のプログラムからすべての出力ファイルを保持するディレクトリ、例えば./main/outfileを作ることができれば素晴らしいだろう。 Fortran 77/90でこれらのファイルにアクセスするときにパスを含めることは可能ですか?メインプログラムのサブディレクトリにあるファイルにアクセスする

コンパイラが重要な場合は、Ubuntu 11.10で動作するgfortranを使用します。

答えて

7

入出力ファイルの場合は、ファイルを開くときのパスを指定するだけです。たとえば:

open(unit=3,file='outputdata/data_modified.txt',status='unknown') 

outputdataフォルダ内のファイルを開きます。 outputdataフォルダがあらかじめ存在する必要があります。そうしないと、エラーが発生する可能性があります。

+0

このコマンドを呼び出す前に、 'outputdata'ディレクトリが存在していることを強調してください。少なくともifortを使って、存在しないディレクトリにファイルを書き込もうとすると、「ファイルが見つかりません」というエラーが出ます。 – Chris

+0

MAINの最後にあるincludeステートメントはどうですか?私は '含む'とはパス入力を受け入れるとは思わない。私は非常に長いinclude文のリストを持っています。これは、MAINが入っているのと同じディレクトリを混乱させるインクルードファイルがたくさんあることを意味しています。これらのサブルーチンをすべてコピーして、最後に.fファイルプログラムの? – kxk7607

+0

@ kxk7607いいえ、しないでください。インクルードファイルに対しても同じパス方法が有効です。インクルードファイルを 'includefiles'フォルダに置いて、' include includefiles/statements.inc'でメインプログラムにインクルードファイルを指定することができます。 – bananafish

2

実行時の開始ディレクトリは、メインプログラムが存在するディレクトリではなく、プログラムを起動するときの現在のディレクトリです。

例えば

mkdir run_N && cd run_N && ../my_program 

アプリケーションのバイナリを別のディレクトリにあるにもかかわらず、現在のディレクトリ(./run_N)内のファイルを読み書きます。

+0

私はMAINがMAINと同じディレクトリに作成されたa.out(または実行可能な他の出力を生成する)という印象を受けました。 a.outをデスクトップに移動すると、プログラムが正しく実行されないことを理解していますか?私を許して、私はまだ私のFORTRAN乳児期にいます。 – kxk7607

関連する問題