• ベストアンサー

Fortran90に詳しい方、お願いします。

「Fortran90を使って、以下↓の機能を持つプログラムを作成し、ソースと実行結果を示せ」という問題です。 「実数rを入力すると、そのrを半径とする円の面積、球の体積、球の表面積を表示する。」 まず、自分で以下のようなプログラム文をTeraPadで作成しました。 !-----課題1(2)----- REAL :: pi, r, S1, V, S2 pi = 3.141593 PRINT *, 'Hankei r' READ *, r S1 = pi * r**2 V = 4 * pi * r**3/3.0 S2 = 4 * pi * r**2 PRINT *, 'Ennomenseki =', S1 PRINT *, 'Kyuunotaiseki =', V PRINT *, 'Kyuunohyoumenseki =, S2 END 次にCygwin画面上で、gfortran -o Hankei r.exe Hankei r.f90と打ったら、 gfortran: Hankei r.f90: No such file or directoryという文字列が出てきました。拡張子はちゃんと、f90にしてるし、プログラム文も文法的に間違ってないはずなのに、どうしてうまくいかないのでしょうか?

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あなたが作ったソースファイルの名前と gfortran を起動するために打ったコマンドでのファイル名をよく見てください, ということではあるけどファイル名に空白は入れない方が安全だと思う. 実際, あなたがここに記した「Hankei r.f90」と「Hankei r.f90」ですら違ってるし (前は「半角空白」, 後ろは「全角空白」). Windows だけであれば #1 の「ダブルクォートでくくる」で終わりなんだけど, Cygwin だとどうだっけなぁ. メッセージからすると全角空白を使っているように見えるんだけど, こいつはサポートしてたっけ....

u260926i
質問者

補足

全角空白の件は、ここで質問文を書く際に間違って入力してしまっただけです、すみません。今日、学校で、ファイル名をHankeirとして、Cygwin上で、gfortran -o Hankeir.exe Hankeir.f90と打っても、やはり、gfortran: Hankeir.f90: No such file or directoryという文字列が出てきました。"Hankeir"というふうに、ダブルクオートでくくっても、上手くいきません。何度見直しても、どこが間違っているかさっぱり分かりません。いったいどこがおかしいのでしょう?

その他の回答 (4)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

ご説明ありがとうございます>#4. 「No such file or directory」というメッセージですから, そのまま訳すと「そんなファイル (もしくはディレクトリ) は存在しない」ってことです. ということで, Cygwin でコンパイルするときのカレントディレクトリに「ソースファイルが存在するかどうか」を確認してほしいんです. そのための手段として 1. まずファイルそのものが存在するかどうかを調べる: これは ls を実行すれば分かります 2. そのファイルが読み込めるかどうか確かめる: cat を使って読み込んでみる くらいをやってみてほしいな, と. もちろんご存じだと思いますが UNIX でもファイル名に空白を入れることができます>#4.

u260926i
質問者

お礼

今日やっと原因が分かりました。 Cygwin上のgfortran -o ( ).exe ( ).f90の( )の中身は作ったソースファイルの名前にしないといけなかったんですね。誤って、プログラム文中の PRINT *, 'Hankeir' の中の「Hankeir」を( )の中に入れてしまっていました(笑)。いや~、今回は僕がプログラミングに疎かっただけに ほんと色々とご迷惑をおかけしました。が、皆さんのアドバイスなどのおかげで何とかうまくいきました。ありがとうございました。

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.4

こんにちは ”Cygwin”って、Windowsの上にかぶせるUnixエミュレータ環境なんですね。 バージョン 1.7 だとダメ文字問題も解決されているとか.. >Isとかcatって何ですか? Windows のコマンドプロンプトは判りますか? Is ではなく LS(LiSt)で dir と同じ目的を持つ UNIX コマンドです。 Cat(conCATenate) は、type と同じ使い方もできる便利コマンドだと思います。  コマンドの詳細は、参考URLで。  ちなみにファイル名やディレクトリ名に空白を挟むのは、UNIX では空白がコマンドやパラメータの区切りを意味するので禁じ手のような気がします..(っていうか 空白を許す Windowsの仕様がいやっ!)

参考URL:
http://x68000.q-e-d.net/~68user/unix/genre.html
u260926i
質問者

お礼

今日やっと原因が分かりました。 Cygwin上のgfortran -o ( ).exe ( ).f90の( )の中身は作ったソースファイルの名前にしないといけなかったんですね。誤って、プログラム文中の PRINT *, 'Hankeir' の中の「Hankeir」を( )の中に入れてしまっていました(笑)。いや~、今回は僕がプログラミングに疎かっただけに ほんと色々とご迷惑をおかけしました。が、皆さんのアドバイスなどのおかげで何とかうまくいきました。ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

そうなると, 「本当にそのディレクトリにファイルがあるのか」ってことが問題になりますな. ls とか cat あたりで確認してみました?

u260926i
質問者

補足

Isとかcatって何ですか?

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

こんにちは Cygwin画面上という環境もよく判らない人ですが、Windows環境なら下記のようにダブルクォーテーションでファイル名をくくってもらっていいですか? gfortran -o "Hankei r.exe" "Hankei r.f90"

関連するQ&A