• 締切済み

フォートランでのファイル操作

フォートランでファイルにアウトプットする際に、アウトプット先のディレクトリが存在しない場合、エラーで計算が止まってしまいますが、これを回避し、自動的にディレクトリを作成するようなことはできないでしょうか。 宜しくお願いします。

みんなの回答

  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.3

FORTRANに限らず、言語仕様としてはほとんどのが駄目じゃないでしょうか、Open文にディレクトリの入ったファイル名を指定できる言語って、ピュアなコンパイラ言語でありましたっけ(インタープリタはのぞく)。 元々、FORTRANはホストで決まった仕様が引き継がれていますから、本来は入出力はDD文で指定するのが本道(笑)ですが、それじゃ、TSSでは困るのでOPEN文が追加されたのが経緯です。 ディレクトリやフォルダに関しては、セパレータが処理系で違うので、言語仕様として制定するのは無理でしょうね。 OPEN文の代わりに、SUBROUTINE FOPENとかを自分で作ればいいと思いますよ。 そのなかでセパレータで文字列を分割、ダミーのOPEN文あたりでディレクトリの存在をチェックして、無ければ作成する(OSの知識はいるかな、まあ、ここだけシェルを呼んでもいいし)、そんな難しくはないでしょ。一回作れば役に立つし。

0123456789A
質問者

お礼

ご回答ありがとうございます。 なにぶん、あまり詳しくないもので一番下の段落は理解できませんでした。OSの勉強をすればわかるようになるのでしょうか・・・ 何か解決策がありそうなので、頑張って勉強してみます。ありがとうございました!

  • baber
  • ベストアンサー率18% (17/92)
回答No.2

No.1 です。 失礼しました。結論を書いていませんでした。申し訳ないです。 私の知る限り無いです。 これはFORTRANに限ったことではなく、C/C++でも同じだと思いますよ。

0123456789A
質問者

お礼

そうですか・・・では頑張って地道にmkdirしまくります。 迅速なご回答、ありがとうございました。

  • baber
  • ベストアンサー率18% (17/92)
回答No.1

出力ファイルオープン時にエラーが検出されますので、そのエラーを判断し、自分でディレクトリを作成すればよいと思いますが。

0123456789A
質問者

補足

当然そうなのですが、大量にディレクトリを作成する際には何度もmkdirするのは面倒ですし、scriptを書くのもバカバカしいのでこのような質問をさせて頂いた次第です。 つまりフォートランでは出来ないということでしょうか?

関連するQ&A

  • 教えて!ファイルの操作

    計算結果をテキストファイルへ書き込んで出力したいです。 一つのファイルへ出力の場合、ファイル名を指定(output.txt)して、出力は出来ますが、 ループ(i:1から10まで)を使って、ループの循環と共に、(output1.txtからoutput10.txt)のように出力したいです。 ファイル名は変わりますから、上記の操作はできますでしょうか。 教えてください! お願いします。

  • ウインドーズでのフォートランについて

    フォートラン77をリナックスで使用していたのですが、最近、ウインドーズにもフォートラン77と、fcpadをダウンロードして使っています。で、質問なのですが フォートランでのコンパイルの際 (1)データをキイインして結果をモニターに表示 (2)データをキイインして結果をファイルに保存してプリント (3)データをファイルに保存しておきそれを読ませて結果をモニターに表示 (4)データをファイルに保存しておきそれを読ませて結果をファイルに保存して、プリント と言うケースがあって、(1)はわかったのですが(2)(3)(4)がどのようにするのかわかりません。 リナックスでは、それぞれemacs上にて、(2)./a.out>kekka (3)./a.out<data  (4)./a.out<data>kekka で、できたはずなのですが、ウインドーズではどのようにすればよろしいのでしょうか。

  • ファイル操作について

    例えば1つのディレクトリに10万個の画像があった場合に、同じディレクトリ内にperlで新しい画像を作ったり削除したりすると、処理速度が遅くなってしまいます。(作成や削除に時間がかかったりする) 違うディレクトリではスムーズに画像を作成したり、削除したりできるのですが、大量のファイルがあった場合は遅くなってしまうようです。 perlでファイルを作ったり削除するのに、ファイル数が多いからという理由で速度が遅くなるものでしょうか。 また、何か対策をご存知であれば教えていただけると嬉しく思います。 よろしくお願いします。

  • Accessで存在しないファイルを指定して出力したい

    DoCmd.TransferTextを使ってCSVファイルの出力を行いたいのですが、存在しないディレクトリを指定してファイル出力を行うとエラーメッセージ3044でエラーになります。 存在しないディレクトリが指定された場合は新たにディレクトリを作成してファイル出力を行うにはどうしたらよいでしょうか?

  • windows 環境でのファイル操作について

    今作成しているjavaのアプリケーションがあるのですが、 うまく動きません。 ファイルサーバにアップロードされるファイルを数秒間ごとに 監視し、アップロードされれば自動で別のディレクトリにコピ ーするというアプリケーションを作成しております。 で、MAC osX server上で動かすと正常に動くのですが、 Windows 2000 server上だと正常に動きません。 プログラムの流れとしてはFile型のorigオブジェクト(元ファイル) と、File型のcopyオブジェクト(移動先のファイル)を用意し、 BufferedInputSteramで読み取って、BufferedOutputStreamで 書き出す、というものです。 うまく動かない箇所は、origファイルがまだアップロード中で ある場合そのファイルに対してFileInputStreamを用意しようと すると、FileNotFoundExceptionが発生するだけでなく、その ファイルが消去されてしまうのです。恐らくはJavaではなく、 OSがコピーエラーが発生したかのように扱ってしまい、ファイル を消去してしまうのではないかと思っているのですが。(osXでは 動くので) FileInputStream fis = new FileInputStream(orig); この行で例外発生!ファイルが消える。 そこでFileInputStreamを用意する前に、そのファイルがコピー中 であるのか、コピーが終わっているのかを調べることができるの でしょうか、というのが私の質問です。あるいは、全く違った側面 からの回避策でも結構です。 ちなみにorig.exists()はアップロード中であってもtrueが返され ます。 javaはプラットホームに依存しないと信じてたのに大きな落とし穴 でした。以下にソースの一部を記述しておきますので、よろしく おねがいします。

    • ベストアンサー
    • Java
  • OPENファイルを画面から読みとりたい

    1.Fortranでプロクラムを組むときに、OPEN文に入るINPUTファイル名を画面上で直接に入れて読みとりたいのです。そのアルゴリズムを教えてください。 2.Fortranで組んだプロクラムを用いて計算しその結果をあるファイルに出力した場合、そのディレクトリに同じ名前のファイルがあると、エラーが出ます。自動的に上書きすることは、できないんですか?教えてください。

  • AIXでの指定ディレクト以下の全ファイル削除について

    お世話になっております。 AIX5.1のOSで、指定ディレクトリ以下(ファイルのみしか存在しない)ファイルを全て自動で削除するようにシェルを組むことは可能でしょうか? 以下のようにシェルを作成しましたが、ファイル数が多すぎるらしくエラーで削除することができませんでした。 ちなみに、ファイル数は約4000以上あります。 rm -f /(指定ディレクトリ)/* ファイル数が多くても削除できるようにしたいのですが、何かよい方法はありますでしょうか? 以上宜しくお願い致します。

  • [if文]ファイル/ディレクトリの存在有無について

    [if文]ファイル/ディレクトリの存在有無について教えて下さい。 「あるディレクトリ配下にファイル、ディレクトリがない場合、 エラーを出力。」を目的に以下のシェルを作成しました。 if [! -f $DIR/* -a ! -d $DIR/*] nodataend fi しかし、あるディレクトリ配下に複数のファイルが存在すると正常に処理されません。 この場合、どのような条件で指定すればいいのでしょうか。 個人的には条件で指定している*が問題ではないかと思います。 宜しくお願いします!

  • 自己解凍形式の圧縮ファイルについて

    自己解凍の圧縮ファイルを作成するために、「WinSFX32」の設定を次のように行いました。 「ウインドウタイトル」と「解凍先ディレクトリー欄タイトル」にはそれぞれタイトルを任意に入力。 「初期値解凍先ディレクトリー」は絶対パスで "c:\Program Files\TEST" 「解凍後実行コマンド」は空欄のまま EXEファイルは問題なく作成されました。 これを別の機械で実行しました。 ところが目的のファイルは  c:\(目的のファイル) 、つまりCドライブの直下に解凍されてしまいます。 別の機械は c:\Program Files まではディレクトリーがありますが、TEST のディレクトリーは存在しません。なくても自動的にこのディレクトリーを作成してその中に解凍すると聞いてますが・・ どこが間違っているのでしょうか。

  • フォートランでのバグについて

    フォートラン初心者です。実行しても以下のメッセージが出てうまくいきません。 unknown code in do_fio:0 lisi io unknown code in do_fio:0 lisi io unknown code in do_fio:0 lisi io unknown code in do_fio:0 (null) 4.71238899 これは一体どういう意味で、どうすればエラーをなくす事ができるでしょうか。 検索してもそれらしい情報を得る事ができませんでした。どなたか教えていただけないでしょうか。今の環境で数値計算できるのは今日までなので、急ぎ目で回答をいただけないでしょうか。よろしくお願いします。

専門家に質問してみよう