1 名前:デフォルトの名無しさん [2009/01/24(土) 18:32:01 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 FORTRAN使いが優しくコメントを返しますが、 お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。 ●注意事項 ・質問する前にGoogle等の検索サイトで検索しましょう。 ・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。 ・エラーの場合は起きた状況、環境(OS・コンパイラ・バージョン)、エラーメッセージも詳しく書きましょう。 ●前スレ くだすれFORTRAN(超初心者用)その3 pc11.2ch.net/test/read.cgi/tech/1196384126/ くだすれFORTRAN(超初心者用)その2 pc11.2ch.net/test/read.cgi/tech/1164121236/ くだすれFORTRAN(超初心者用) pc8.2ch.net/test/read.cgi/tech/1138063703/ ●関連スレ FORTRAN W pc11.2ch.net/test/read.cgi/tech/1163319215/
91 名前:デフォルトの名無しさん [2009/03/16(月) 22:18:43 ] サブルーチンがたくさんあるプログラムを作る時はmoduleよりもinterfaceの方が良いですか? module間で相互にmoduleを参照(use)するとエラーが出て、悲しい状態です。 誰か教えてください。 ちなみに、moduleについて詳しく書いてある本があればそれも教えてください。
92 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 03:15:21 ] そのエラーがどんなものか分からないことには何とも・・・ 確かにmoduleはよく考えて使わないと面倒な目に合うな 個人的にはFortranやるなら、あんまり細かく部品化しすぎないほうがいいと思う
93 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 06:23:06 ] >>91 module の前方参照のみしか許していないコンパイラーが多いよね。 ソースの前方に書いたmodule だけをuse するようにしてごらん。
94 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:24:33 ] >>91 コンパイラは何?
95 名前:91 [2009/03/21(土) 12:36:18 ] 返事遅くなりました。すんません。 >92 サブルーチンは使いまくってます。 サブルーチンがないと不便です…。 >93 前方参照はmoduleをprogramより前に書けってことですよね? moduleは別ファイルです。こんな感じになってます。 ファイルa.f90 module a use b contains subroutine foo ... end module a ファイルb.f90 module b use a contains subroutine bar ... end module b わかりにくい質問ですんませんでした。 >94 コンパイラはifort(ver.11)です。 inteface使えよって意見は出ないもんなんですね。 みなさんはサブルーチン使うとき、どうやってるでしょう?
96 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 19:50:38 ] >>91 >module間で相互にmoduleを参照(use)する 相互にuseするのって不可能じゃないの? コンパイルするときにuseするモジュールの.modファイルが必要だし。 というか、fortranに限らず相互に呼び合うようなのは概念的に許されるのかな・・・? もし許されるとしても、混乱の元だろうし非常にまずいような・・・・ >inteface使えよって意見は出ないもんなんですね。 >みなさんはサブルーチン使うとき、どうやってるでしょう? interfaceの主な用途としては、fortran77で書いた外部サブルーチンを そのままいじらずに、より安全に使いたいとき、などじゃないかな。 形状引継ぎ配列や割付け配列などの機能を使いたいときは、 いずれにしろそのサブルーチンの修正が必要になるので、そのときは大人しく モジュールで囲ってモジュールサブルーチンに変更すべきかと思うが。
97 名前:91 [2009/03/22(日) 10:19:29 ] >>96 ありがとうございます。 相互に呼び出さないようにするためにはツリー構造を考えないといけないですね。 ちょっと面倒くさい気がします。
98 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 20:26:55 ] 結局>>91のエラーは解決したの?
99 名前:91 mailto:sage [2009/03/24(火) 08:27:42 ] 相互参照しないように書けば、エラーは消えます。 ただ、皆さんがどういう風に対応してるのか知りたかったのです。 お相手ありがとうございました。
100 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:58:20 ] >>99 オレ、一個の超特大module にしている。