Fortran90で書かれた、又はこれから書く、プログラム実行したく
GCCのgfortranをインストールしました。OSは、Windows XPです。

ところが、コンパイルのところで、つまずいてなかなか進みません。
(gfortranは動いてますので、インストールに問題はないと思います。)

そこで、gfortranについて(オプション等)、解説しているサイトや文献を教えて頂きたいと思います。
英語力があまり無いので、日本語のものを紹介いただけると助かります。

また、十数年ぶりのフォートランですので(現在はVBAしか触っていません)、初学者向けだと、なお助かります。

どうか、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (8件)

#3です。

確認しました。確かに Fortran 95コンパイラのようですね。ただ、

GNU Fortran 95 (GCC) 4.2.0 20060504 (experimental)
Copyright (C) 2006 Free Software Foundation, Inc.

とありますし、webページを見てもまだ開発段階の初期のものとみなされて
いるようなので誰もが問題なく使えるものではなく、ドキュメントも整備されている途上ですから、この時点で日本語に訳したものとか初学者向けを期待するのは少々無理があるかと。
ただ、他の f95という名のコンパイラと同じように使えるようなのでそれ向けの解説を見たりすると良いかもしれません。

ところでgfortran はコンパイル対象のファイルの拡張子が .for だと、それは Fortran 77で書かれたものとしてみなすようですがそれは大丈夫なのですか?
COMMONブロックが、includeされる方のファイル(f2.fi)に記述されているのなら、include自体はできているようです。

コンパイルしようとしているのが無償公開されているものとのことですので、エラーを起こしている最初の部分のソース数行を貼り付たりファイルの場所を教えてもらうとかは可能ですか?

参考URL:http://www.scl.kyoto-u.ac.jp/scl/appli/appli_man …
    • good
    • 0
この回答へのお礼

ありがとうございます!お手数をお掛けしております。大変参考になります。

>GNU Fortran 95 (GCC) 4.2.0 20060504 (experimental)
>Copyright (C) 2006 Free Software Foundation, Inc.

>とありますし、webページを見てもまだ開発段階の初期のものとみなされて

そうなんですか。コンパイラの選択から考えたほうがいいかもしれませんね。あまり英語得意じゃないもので・・・、(experimental)を見逃していました。

#2様の
>GCC の gfortran って, Fortran90 もコンパイルできたんでしたっけ?
で、少し、いや~な予感がしたのですが。。。そういう問題もあるのですね。



>COMMONブロックが、includeされる方のファイル(f2.fi)に記述されているのなら、include自体はできているようです。
はい、COMMONがf2.fiに記述されています。#5様からお示しいただいたサンプルプログラムでも、includeを確認できました。

>コンパイルしようとしているのが無償公開されているものとのことですので、エラーを起こしている最初の部分のソース数行を貼り付たりファイルの場所を教えてもらうとかは可能ですか?
プログラムの説明には、「公開(無料)」「プログラムの書き換え自由」と書いているのですが・・・、入手窓口が公開されていませんので、申し訳ございませんが、私の判断でお知らせする訳にはいかないと思います。恐れ入ります。

お礼日時:2006/05/25 17:51

「-x f95 って付けると Fortran95 だと思ってくれる」って書いてありますね....

    • good
    • 0
この回答へのお礼

ありがとうございます。

またまた、読み落としてしまったようです。
 http://gcc.gnu.org/wiki/GFortranUsage

>When gfortran is run on a file whose name ends ・・・・(省略)
>・・・・For Fortran 95 this is f95.

は、コンパイル時に明示的に言語を指定するためのやり方だったんですね。よく分からなくて読み飛ばしてしまっていました。ご忠告ありがとうございます。(^_^;)助かります。

お礼日時:2006/05/26 11:12

拡張子 .f でも Fortran77形式(固定書式)のソースとしてみなされます。


Fortran95形式(自由書式)のソースとして認識させたいなら、 .f95 という拡張子を使います(.f90でもよいかもしれませんが試してません)。
    • good
    • 0
この回答へのお礼

ありがとうございます。

今回調べてみて、フォートランの自由書式というのをはじめて知りました。
ただ、現在動かそうとしているプログラムは、「6カラム+コード」という、私が知っているf77の書き方と同じです。

そして、GCCのgfortranのホームページ
 http://gcc.gnu.org/wiki/GFortranUsage
にて
>Since Fortran 95 allows for two different kinds of input source forms ・・・
とあって、
>1.Files whose name ends in .f or .for are assumed to be fixed form
>2.Files whose name end in .f90 or .f95 are assumed to to be free form

なるコメントを見つけましたので、今回のプログラムの場合では「.f」または「.for」でも良いのかなぁと解釈しました。(私の英語力では、またまた見逃しがあるかもしれませんが・・・)

お礼日時:2006/05/25 18:10

>「f1.for」ソースコード内のサブルーチンごとに「include 'f2.fi'」が書かれています。


>そして、「f1.for」と「f2.FI」は同じフォルダにあります。
>・・・・ということでした。

「サブルーチンごとに」と言うのがちょっと気になりますが、includeしているのであれば、
gfortran f1.for
でよいです。
gfortran f1.for f2.FI
ではいけません。

エラーなしに何かコンパイル成功したことはないのでしょうか?

ためしにやってみてください。ただしこのBBSは頭のスペースが取れてしまいますので、7カラムのスペースを頭につけてください。

まず、includeされるテストファイルincl.f(1行のみ)
write(*,*)'include ok'

次にincludeする側のテストファイルtest.f
include 'incl.f'
write(*,*)'hello, world!'
end

これで、
gfortran test.f
とやってみてください。

エラーが出るようなら、そのまま全部返信してください。

この回答への補足

さてさて、
おかげ様で、ひとつ可能性を潰すことができましたが・・・


gfortran f1.for
をたたいてみました。

それから、#6様のご指摘も踏まえまして、ファイルの拡張子を換えて、
gfortran f1.f
をたたいてみましたが、

やっぱり、滝のようなエラーが流れていきます。



つまり、
ソースコードがエラー、又は、gfortranと合わない
ということでしょうか?

ちょっと気になったのは、
f2.FI
のコードが、
「6カラム空白+コード」ではなく、
「タブ+コード」となっていたことです。
そこで「タブ」を「6カラム空白」に置換してコンパイルしてみたのですが、結果は同じエラーの滝です。



ここからは、ソースコードとのニラメッコになるのでしょうか?
一難さって、また一難です。

お手数ですが、ご助言いただけると幸いです。よろしくお願いします。

補足日時:2006/05/25 17:27
    • good
    • 0
この回答へのお礼

ありがとうございます!
ご教示いただいたサンプルプログラム、無事動きましたっ!

つまり、includeを使った、複数ファイルのコンパイルは、
お示しいただいた、コマンド
gfortran test.f
のパターンで行うということですね。

おかげ様で、ひとつ、可能性を潰すことができました。

お礼日時:2006/05/25 17:07

>ファイルが2つありまして、f1.for と f2.FI


f1.for で f2.FI をinclude しています。
>そこで、
>> gfortran -Wall s1.for s2.FI

includeしているのだったら、

gfortran f1.for -o f1
だけでよいのではないでしょうか?

この回答への補足

ご回答ありがとうございます。

さてさて、
>gfortran f1.for -o f1
>だけでよいのではないでしょうか?

たたいてみましたが、滝のようなエラーは変わらずです。


もしかして、
「f1.for で f2.FI をinclude しています。」
という私の表現がまずかったかもしれません。

正確には・・・・
「f1.for」ソースコード内のサブルーチンごとに「include 'f2.fi'」が書かれています。
そして、「f1.for」と「f2.FI」は同じフォルダにあります。
・・・・ということでした。

ひょっとして、includeがうまくできていないのでしょうか?


私、includeの動きがよく分かっていません。
私の理解レベルは、ファイルが複数あるときは、
「そういえば、コンパイラとかリンカとか使っていたような・・・でもどうやって使ってたかなぁ?」位しか覚えておりません。

この現象もそうですが、コマンドのオプションや使い方等について、良い情報(できるだけ日本語)があれば、それも教えていただけると助かるのですが・・・
すみません、欲張りで。どうか、よろしくお願いします。

補足日時:2006/05/25 15:05
    • good
    • 0

Windows XP 上で使われているとのことですが、具体的にどのパッケージのバイナリを使われていますか?


ダウンロード元の場所などを教えてください。

この回答への補足

>ダウンロード元の場所などを教えてください。

はい、
 http://gcc.gnu.org/wiki/GFortranBinaries
からダウンロードしました。
ここで2種類ありますが、

 mingw/"native Windows"
のほうです。
 (2006-05-04)
とカッコ書きされたインストーラをダウンロードしました。

理由は、
「mingw/"native Windows"」と「Cygwin」の2つのうち、どっちを選んだら良いか分からない人は、「mingw/"native Windows"」がよいと書かれているようでしたので。どっちがいいか分からない私は、コッチにしました。

よろしく、お願いします。

補足日時:2006/05/25 13:10
    • good
    • 0

GCC の gfortran って, Fortran90 もコンパイルできたんでしたっけ?

この回答への補足

つたない英語の読解力ですが、
GCCのホームページを見て、
Fortran95まで対象にしていると解しましたが・・・
何か問題があるのでしょうか?

補足日時:2006/05/25 10:32
    • good
    • 0

>ところが、コンパイルのところで、つまずいてなかなか進みません。



具体的にどう躓いているのでしょうか?
g77 test.f
と打つだけなので、正しくInstallされているなら、躓きようがない様に思いますが。

この回答への補足

>具体的にどう躓いているのでしょうか?

はい、実は・・・
ファイルが2つありまして、f1.for と f2.FI
f1.for で f2.FI をinclude しています。

そこで、

> gfortran -Wall s1.for s2.FI
とか
> gfortran -o test s1.for s2.FI
とか
たたきました。すると、

 >Error: Syntax error in COMMON statement at (1)
とか
 >Error: Expected another dimension in array declaration at (1)
とか
 >Unexpected STATEMENT FUNCTION statement at (1)
等などのエラーが大量に、滝のように流れます。

ソースのコードがエラーなのか?
ソースが他のfortran仕様なのか?(Fortran90とは書いてます。無償公開プログラムです。)
gfortranの操作ミスなのか?

見当がつきませんでしたので、質問しました。

この際ですので、じっくり勉強したいとも思っておりますので、
この問題に限らずに、初学者が理解できそうな、できれば日本語で書かれたよい情報があれば、教えていただきたいと思っております。
よろしくお願いします。

補足日時:2006/05/24 13:21
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qイオン銀行の店舗

大阪府内にイオン銀行の店舗はありますか?
私、そこで口座を新設しようと思っているのですが、

Aベストアンサー

・イオンモールりんくう泉南店(代理店*)
・イオンモール堺北花田プラウ店(代理店*)
・イオン大日ショッピングセンター店
・マイカル茨木店(代理店*)

まで(@^^)/~~~




http://sp.chizumaru.com/dbh/financialbiz/list.aspx?account=financialbiz&accmd=0&arg=&c1=&c2=&c3=&c4=0%2C2&c5=&c6=&c7=&c8=&c9=&c10=&c11=&c12=&c13=&c14=&c15=&c16=&c17=&c18=&c19=&c20=&c21=&c22=&c23=&c24=&c25=&c26=&c27=&c28=&c29=&c30=&mode=11&key=&pg=1&adr=27&orgpg=1&comp=5&bid=

QFortran90/Fortran95→Fortran77

大学の授業でFortranを使ったプログラミングを勉強しています。

以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます)
大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^;
家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています

なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコンパイルしているからだと思います(全くの勘違いだったら指摘して下さい)

Fortran90/Fortran95の開発環境がフリーで整えばいいのですが、見つからないのでプログラムを修正したいと思います そこで、力を貸していただきたいのです

前置きが長くなりましたが、エラーが出る文は以下のところです
open(8,file='freq_ex13.dat',action='write',status='replace')
ここを、Fortran77のコンパイラでコンパイルできるようにアドバイスを下さい よろしくお願いします

大学の授業でFortranを使ったプログラミングを勉強しています。

以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます)
大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^;
家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています

なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコン...続きを読む

Aベストアンサー

action='write'を削除してみては?
8番にREADを使わなければいいだけの話です。
http://docs.hp.com/ja/B3908-90007/ch10s65.html#id21163286

Fortranはコンパイラ毎に独自の拡張が相当されてますから、移植する際にはどの拡張が使えるのか把握する必要があります。
使えない場合はコンパイルエラーが返ってくるのですぐにわかりますけど。
http://www.cc.nao.ac.jp/vppman/HTML/japan/langFort/fvp11/fvp00079.htm

参考URL:http://docs.hp.com/ja/B3908-90007/ch10s65.html#id21163286

Qウォルマートやイオン・グループなどの巨大店舗の功罪を教えてください。

ウォルマートやイオン・グループなどの巨大店舗の功罪を教えてください。

Aベストアンサー

簡単に書けば
功=人々が豊かになった。
罪=効率化することで中間で働いていた人たちの仕事が無くなる
  低価格を実現するために、賃金以上の労力が必要になる

罪に関して言えば日本もデフレなのでイメージできると思います。

功に関しては
例えば、100円ライターが昔は100円だったけど今は10円ぐらいで買えますよね?
どう言う事かと言うと、少々貧乏でもライターが買えないと言う事はなくなります。
他の商品に置き換えても一緒です。
つまり人々の生活は豊かになる。=物の価格が下がり選択肢が増えた。

QFortran90のプログラムについて

大学で卒論のためにFortran90でランダムウォークのプログラムを作ってるんですが…2週間悩んでるんですが、できないところがあります。
「1次元のランダムウォークにおいて、ステップ数Nとxの値を与えたときのすべての可能な歩行を数え上げるプログラムを書け」というものです。
直接ステップ数を書き込んだプログラムを基にして任意のステップ数を入力するプログラムを作ってみたんですが、うまくいきません。
integer :: a(100,20), x, i1, i2, i3
x = 0
do i1 = -1, 1, 2;do i2 = -1, 1, 2;do i3 = -1, 1, 2
x = x + 1
a(x, 1) = i1;a(x, 2) = i2;a(x, 3) = i3
end do;end do;end do
end
が基にしたプログラムです。これはステップ数が'3'なので実行結果は「-1-1-1,-1-11,-11-1,-11-1,-111,1-1-1,11-1,111」というxの変位の仕方が出ます。
integer, allocatable :: a(:,:)
integer :: i, n, x, l
print *, 'ステップ数を入力:'; read *, n
allocate(a(n, 2**n))
do l = 1, n
do i = -1, 1, 2
x = x + 1
a(x, l) = i
end do
end do
end
という風に作ってみたんですが、'3'を入力しても同じ結果が出ません。わかりにくい文章で申し訳ないですがどなたかご教授お願いします。

大学で卒論のためにFortran90でランダムウォークのプログラムを作ってるんですが…2週間悩んでるんですが、できないところがあります。
「1次元のランダムウォークにおいて、ステップ数Nとxの値を与えたときのすべての可能な歩行を数え上げるプログラムを書け」というものです。
直接ステップ数を書き込んだプログラムを基にして任意のステップ数を入力するプログラムを作ってみたんですが、うまくいきません。
integer :: a(100,20), x, i1, i2, i3
x = 0
do i1 = -1, 1, 2;do i2 = -1, 1, 2;do i3 = -1, 1,...続きを読む

Aベストアンサー

元のプログラムを再現するなら
allocate(a(2**n, n))
じゃないかなぁと思うのでこれでいくんだけど, 例えば a(:, 1) は
「最初の 2**(n-1) 個が 1, 次の 2**(n-1) 個が -1」
ですね. で, a(:, 2) は
「2**(n-2) 個ずつ 1 と -1 を繰り返す」
ですね. ということで, a(:, l) は
「2**(n-l) 個ずつ 1 と -1 を繰り返す」
ことになります. つまり,
do l = 1, n
do i = 1, 2**n, 2**(n-l+1)
a(i:i+2**(n-l)-1) = 1
a(i+2**(n-l):i+2**(n-l+1)-1) = -1
end do
end do
で終わり... じゃないかな.

Qイオン銀行の口座開設はネット申し込みと実店舗はどっちが得ですか?

ネット銀行だから実店舗はないと思ってましたが
調べたらイオンモールにあったんで口座開設するならどっちで作ろうか考えてます。
自分の住んでる場所(埼玉)の近くにイオンはなく
1番近くても電車で1時間ぐらいでした。

この場合はネット申し込みの方が行く必要がないんで
良いんじゃないかと感じましたがなんか実店舗でやった方が安全性が高い気がするんで
近くにイオンがあるなら問題なく直接行って作ったと思いますが
どっちで作る方が得とかあるかどうか教えて下さい。

あと、これが目当てでイオン口座作るんで重要なんですが
キャッシュカードは金利が上乗せされると言われてるイオンセレクトで作りたいんですが
クレカが苦手なんで使い過ぎないデビットの方の『キャッシュ+デビットカード』で作りたいと考えてます。こっちでも同じ条件で金利上乗せの特典があると聞いてます。

Aベストアンサー

>どっちで作る方が得とかあるかどうか教えて下さい。

特にないです。

QMS-FortranとFortran90

私は研究でFortran90を使っているのですが、研究に使うプログラムはMS-Fortranを用いて書かれているものでした。

そこで質問なんですが、MS-FortranとFortran90の違いについて知っている方がいれば教えてください。
また、MS-FortranでかかれたソースコードをFortranにコピーした時に何か弊害はあるのでしょうか?(人づてに弊害が起こると聞いたことがあるのですが・・・)。

プログラミングを本格的に始めて、まだ3ヶ月ほどで用語の使い方がわかりにくいところがあるかもしれませんがよろしくお願いします。

Aベストアンサー

MicrosoftがFortranを出していた時期を考えると、多分ですが、Fortran77だと思いますね。
Fortran90自体、製品が揃ったのは90年からかなり立っています。そのころには、Microsoftの言語製品はCとBASICだけになっていたんじゃないかな。

なお、MS-Fortranに限らず、intel系のFortranでは、86系のアーキテクチャの影響でホストに比べ、一部の機能が制限されている場合があります、これらについてはマニュアルを参照してください。

Q東京でスーツが買えるイオン店舗探し

こんにちは、
東京都江戸川区に住んでいるのですが
あまり地理に詳しくなく、
近くのイオンの一万円スーツが買える店舗を探しています。
情報などありましたらお願い致します。

Aベストアンサー

江戸川区でしたら荒川を渡った南砂町にイオンと系列のジャスコがあります。
スーツも置いてありますので、買えると思いますよ。

ジャスコ南砂町
http://www.enjoytokyo.jp/OD003Detail.html?SPOT_ID=l_00014903

イオン南砂町(スナモ)
http://sunamo.jp/floormap/index.html

Qfortranで長いプログラムを書き、コンパイルはできたのですが

fortranで長いプログラムを書き、コンパイルはできたのですが
実行の際、実行時間がかなりかかり実行がなかなか終わりません。

プログラムが長いと言っても、30分以上かかるようなプログラムではないと思うのですが。

実行時間が長くかかってしまう原因についてご存知の方は教えて下さい。
よろしくお願いします。

Aベストアンサー

#1さんが言ってる無限ループの他には、
何らかの理由でループのカウンターが壊れていてとんでもない回数のループになっているとか、
入力待ちになっているのに気が付いていないとか、
が考えられますね。
紙上デバックもいいけど、デバッガがあるのならそれを使えばよいし、デバッガが近くになくても適当なところにPRINT文を入れてどこまで進んでいるのかを確認するだけでも見直すべき範囲が絞り込めます。

Q関東のイオンショッピングセンター(ジャスコ)最大の店舗はどこ?

イオンショッピングセンター(ジャスコ)について伺いたく質問しました。

ジャスコは大型店舗が多く、家族でよく利用しています。今度さいたま市に「浦和美園店」という大きい店舗ができるという話を聞きました。ちょっと前にできた「ジャスコ水戸内原店」にはよく行くのですが「北関東最大規模の~」とうたわれていました。また、「関東では三番目に大きな~」という話を聞きました。

そこで質問なのですが、関東でジャスコ水戸内原より大きいジャスコって、どこにあるんでしょうか?関東なら見にいけるかと思っているのですが・・・・。

ご存知の方、教えてください。

Aベストアンサー

以前は千葉市緑区にある鎌取店は床面積も最大級でした。今はイオン成田ショッピングセンターかイオン太田が最大でしょう。今後まちづくり3法でかなり規制が入るので出店は難しくなるでしょう。

QFortranで書かれたプログラムのコンパイル方法

VAX FORTRAN(version 5.0)で書かれたプログラムをWindowsXPで動かしたいのですが、これって可能でしょうか?

Windows用のLF95は所有しており、コンソール画面から試したのですが無理なので何か良い方法がありましたらどなたか教えていただけないでしょうか?

コンパイル用のバッチファイルとして@COMPILE.comファイルというのがあり、このコマンドを叩けばすべてが動くはずなのですが・・・。

Aベストアンサー

可能かもしれませんし、不可能かもしれません。そのプログラムが純粋なFortranの機能だけを使っていれば可能でしょうし、VAX FORTRAN固有の機能を使っていれば書き直しが必要です。

>コンパイル用のバッチファイルとして@COMPILE.comファイルというのがあり、
それって、VMSでのVAXFORTRANのコンパイル手順ですよね。それはWindowsでは使えません。LF95を持ってないので具体的には教えられませんが、LF95のマニュアルを読んでWINXPでのコンパイル手順を調べてその通りにすればコンパイル出来るでしょう。

参考URL:http://cygwin.com/


人気Q&Aランキング

おすすめ情報