- ベストアンサー
FORTRAN95の改行について
長い配列にデータを入力するために命令文の途中で改行したいのですが、 enterで改行すると、不完全な文として扱われてしまいました。 かといって、改行しないと一行につき254文字までしか入力できません。というエラーが出てしまいます。どうしたらよいのでしょうか? おしえてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
えぇと, ありがちパターンだと, 「拡張子を .f90 なり .f95 なりにする」と自由書式になりそうな. で, Fortran の規格 (のドラフト) は http://j3-fortran.org/doc/ からあさることができます. 本当は正式なものを JIS から入手するのが正しいんですけど. あ, 蛇足ですが, 「0 以外の文字で始めてみる」ときには変数に正しい値が設定されていることを確認しておくべきでしょう.
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
誰だ, 「スペースを 5つ入れる」なんて書いてるのは.... ちょっと Fortran の規格 (のドラフト) を見ると.... 固定書式 (旧来の FORTRAN 互換) の場合, 1-5文字目: 文番号 (1文字目が C または * の場合は注釈) 6文字目: 空白でも 0 でもなければ前の行から継続 (空白か 0 なら新しい行の開始) 7-72文字目: プログラム なので, そこに 0 が入ることによって「そこから行が始まる」と思われてるんじゃない? ちなみに自由書式 (新しい Fortran90 以降) の場合には, 行の (注釈を除く) 空白でない最後の文字が & なら次の行に継続することになります.
補足
回答ありがとうございます。0.33(enter) 4789, ... という風に0以外で行を始めてみます。 fortranの規格というのはどうすれば手に入るか分かりますか?
- water-cooled
- ベストアンサー率14% (76/538)
Fortran 90だと、スペースを5つ空けてとかいう制限はなくなった思います。次行に続く場合も単に&を書いておけばいいと思います。 拡張子は.f90で保存してください。 以下のコードはIntel FORTRAN 9.0でコンパイルできました。 program fit implicit none integer n,m,i,ipiv,info,j,k real*8 a,b,x,f,s,y parameter(n=23, m=4) dimension a(m,m), b(m), ipiv(m), x(n), f(n), s(n) data x/0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, & 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, & 4.6, 4.8, 5.0/ data f/0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, & 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, & 4.6, 4.8, 5.0/ data s/0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, & 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, & 4.6, 4.8, 5.0/ end program fit
補足
私のものはEPC fortran-95 version f95 Intel:200200:131124 というものらしいです。&をつけてしまうとsyntax errorとなってしまいます。私もx/0.6以下の並びをコピーしてコンパイルするとうまくいくのですが、先ほどの*部分に0.3347という値を入れたとたんにエラーが出てしまうんです。拡張子は現在~.fというものを使っているのですが、それが原因なのでしょうか?上のバージョン情報はコンパイルしたときに出るものです。あいにく授業用のパソコンなので現在使えません。今度それもためしてみます。 しかし一番不思議なのは、値によって格納できるかどうかが 決まってくるということです。それは何が原因なのでしょうか?
- water-cooled
- ベストアンサー率14% (76/538)
行末に&をつけると次行に続くことになります。
補足
回答ありがとうございます。やってみたのですが、syntax error となってしまいました。少しバージョンが違うようです。私が使っているのは、intelのfortran 95です。自分でもネットで探した結果、スペースを5ついれた後に文字を入れ始めるというのを見つけなんとかできました。ところがあり得ないところでエラーが出てしまいます。エラーが出るところを突き止めましたので、すこしみてもらえませんか?プログラムの前半を載せます。 program fit implicit none integer n,m,i,ipiv,info,j,k real*8 a,b,x,f,s,y parameter(n=23, m=4) dimension a(m,m), b(m), ipiv(m), x(n), f(n), s(n) data x/0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0/ data f/4.25205, ~(略)~ 10.5705/ data s/0.372145, 0.327927, 0.320968, 0.376432, 0.33314, *, 1.8, 2.0, (以下略) *の部分に1.0以上の数ならエラーがでないのですが、 0.~となるとdata s/~ の行の最後に incomplete statement となってしまいます。 こんなエラーはあり得ますか?
お礼
担当の先生もよくFORTRANについて知らない状態だったので、こうゆう資料があると助かります。ありがとうございました。