- 締切済み
フォートランでのファイル操作
フォートランでファイルにアウトプットする際に、アウトプット先のディレクトリが存在しない場合、エラーで計算が止まってしまいますが、これを回避し、自動的にディレクトリを作成するようなことはできないでしょうか。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ultraCS
- ベストアンサー率44% (3956/8947)
FORTRANに限らず、言語仕様としてはほとんどのが駄目じゃないでしょうか、Open文にディレクトリの入ったファイル名を指定できる言語って、ピュアなコンパイラ言語でありましたっけ(インタープリタはのぞく)。 元々、FORTRANはホストで決まった仕様が引き継がれていますから、本来は入出力はDD文で指定するのが本道(笑)ですが、それじゃ、TSSでは困るのでOPEN文が追加されたのが経緯です。 ディレクトリやフォルダに関しては、セパレータが処理系で違うので、言語仕様として制定するのは無理でしょうね。 OPEN文の代わりに、SUBROUTINE FOPENとかを自分で作ればいいと思いますよ。 そのなかでセパレータで文字列を分割、ダミーのOPEN文あたりでディレクトリの存在をチェックして、無ければ作成する(OSの知識はいるかな、まあ、ここだけシェルを呼んでもいいし)、そんな難しくはないでしょ。一回作れば役に立つし。
- baber
- ベストアンサー率18% (17/92)
No.1 です。 失礼しました。結論を書いていませんでした。申し訳ないです。 私の知る限り無いです。 これはFORTRANに限ったことではなく、C/C++でも同じだと思いますよ。
お礼
そうですか・・・では頑張って地道にmkdirしまくります。 迅速なご回答、ありがとうございました。
- baber
- ベストアンサー率18% (17/92)
出力ファイルオープン時にエラーが検出されますので、そのエラーを判断し、自分でディレクトリを作成すればよいと思いますが。
補足
当然そうなのですが、大量にディレクトリを作成する際には何度もmkdirするのは面倒ですし、scriptを書くのもバカバカしいのでこのような質問をさせて頂いた次第です。 つまりフォートランでは出来ないということでしょうか?
お礼
ご回答ありがとうございます。 なにぶん、あまり詳しくないもので一番下の段落は理解できませんでした。OSの勉強をすればわかるようになるのでしょうか・・・ 何か解決策がありそうなので、頑張って勉強してみます。ありがとうございました!