- 1 名前:デフォルトの名無しさん [2006/11/12(日) 17:13:35 ]
- FORTRAN総合スレッドです。
FORTRAN77/90/95/2003, HPF等、FORTRAN全般に関する話題を書き込んで下さい。 ・FORTRAN関連情報 お約束だが、まずは自分で調べよう www.google.co.jp/ x86で動作するFortranコンパイラ www.nminoru.jp/~nminoru/programming/x86-fortran.html The Fortran Company www.fortran.com/ Polyhedron Software www.polyhedron.co.uk/ Google Directory - Fortran directory.google.com/Top/Computers/Programming/Languages/Fortran/ ・前スレ FORTRAN III pc8.2ch.net/test/read.cgi/tech/1104724162/ FORTRAN II pc5.2ch.net/test/read.cgi/tech/1068351911/ Fortran pc2.2ch.net/test/read.cgi/tech/1003214738/
- 524 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 21:51:40 ]
- ちょっとテストしてみた@Intel Fortran 10.1
integer::i integer,parameter::imax=5 real(8)::f(imax) do i=1,imax ; f(i)=i ; enddo print *, "print *,f" print *, f print *, '---' print *, "write(*,'(f)') f" write(*, '(f)') f print *, '---' print *, "write(*,'(f)') (f(i),i=1,imax)" write(*, '(f)') (f(i),i=1,imax) print *, '---' print *, "write(*,'(f\)') f" write(*, '(f\)') f print *, '---' print *, "write(*,'(f)',advance='no') f" write(*, '(f)',advance='no') f print *, '---' print *, "write(*,'(f)',advance='no') (f(i),i=1,imax)" write(*, '(f)',advance='no') (f(i),i=1,imax) print *, '---' end
- 525 名前:>>524の結果 mailto:sage [2009/03/18(水) 21:52:34 ]
- print *,f
1.00000000000000 2.00000000000000 3.00000000000000 4.00000000000000 5.00000000000000 --- write(*,'(f)') f 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 --- write(*,'(f)') (f(i),i=1,imax) 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 --- write(*,'(f\)') f 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 --- write(*,'(f)',advance='no') f 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 --- write(*,'(f)',advance='no') (f(i),i=1,imax) 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 ---
- 526 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:07:03 ]
- ごめん。
print文かwrite文か、また出力並びをfとするか(f(i),i=1,imax)とするかで、 出力結果が違うのかと思ってやってみたが、違いはないっぽい。 というわけで、>>524をもっとすっきりさせた。 integer::i real(8)::f(3) do i=1,3 ; f(i)=i ; enddo print *, "write(*,*) f" write(*,*) f print *, '---' print *, "write(*,'(f)') f" write(*,'(f)') f print *, '---' print *, "write(*,'(f\)') f" write(*,'(f\)') f print *, '---' print *, "write(*,'(f)',advance='no') f" write(*,'(f)',advance='no') f print *, '---' end
- 527 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:19:08 ]
- ↑の結果
write(*,*) f 1.00000000000000 2.00000000000000 3.00000000000000 4.00000000000000 5.00000000000000 --- write(*,'(f)') f 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 --- write(*,'(f\)') f 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 --- write(*,'(f)',advance='no') f 1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 --- 結論 @書式省略すると、適当な位置で改行してくれる(規格で決まってるんかな?) A書式指定すると、書式の中身が終わる度に改行 B書式に\を付けると改行抑制 C書式にadvance='no'(デフォルトはyes)を付けるとwrite文が終了したときに行う改行を抑制(Aとの違いに注意) って感じかな。 改行抑制の\と改行指定の/が混ざるとどんな出力になるんだろう。
- 528 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 22:20:24 ]
- ごめん、>>526は
real(8)::f(3) do i=1,3 ; f(i)=i ; enddo は↓に修正。 real(8)::f(5) do i=1,5 ; f(i)=i ; enddo
- 529 名前:デフォルトの名無しさん [2009/03/22(日) 01:30:43 ]
- >@書式省略すると、適当な位置で改行してくれる(規格で決まってるんかな?)
コマンドプロンプトの右端で改行だと思う 違うかなー
- 530 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:23:20 ]
- >>529
他のコンパイラでは改行しないので、コンパイラのせいだと思います。 >>524-528 ありがとうございます。 参考になりました。 write(*,'(f\)') f が良さそうですね。
- 531 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 15:14:13 ]
- >>529
Fortranに限らず、プロンプトのサイズは関係ないよ
|

|