差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

Both sides previous revision Previous revision
Next revision
Previous revision
fortran [2009/10/29 21:54]
saito
fortran [2009/12/01 13:59] (現在)
saito
ライン 80: ライン 80:
  
 ===== データファイルの読み込み ===== ===== データファイルの読み込み =====
-データファイルの中に何行あるか分からないときにはendを使う.+ 
 +データファイルの中に何行あるか分からないときにはiostatかendを使う. 
 +iostatの方がスマートなやり方かも. 
 + 
 +==== やり方その1 ==== 
 +read文にiostatのオプションを付ける. 
 +iostatが正の数を返す場合はエラー,負の値を返す場合は行の終わりを意味するらしい. 
 +<code fortran>​ 
 +program hoge 
 +  implicit none 
 +  real a,b 
 +  integer i,​inputstatus 
 +  do i=1,10 
 +     ​read(*,​*,​iostat=inputstatus) a,b 
 +     ​if(inputstatus>​0) stop "​error"​ 
 +     ​if(inputstatus<​0) exit 
 +     ​write(*,​*) a,​b,​a**2-b 
 +  end do 
 +end program hoge 
 +</​code>​ 
 +==== やり方その2 ==== 
 + 
 +endを使う.
  
 以下サンプル.プログラムの中では10回ループを回すが,読み込むのは5行分だけ. 以下サンプル.プログラムの中では10回ループを回すが,読み込むのは5行分だけ.
ライン 122: ライン 144:
      tar czvf ${TAR} Makefile *.f90      tar czvf ${TAR} Makefile *.f90
 </​code>​ </​code>​
 +
 +
 +===== implicit none =====
 +宣言文で宣言した変数以外を利用しないようにする。
 +長いプログラムを書く場合はミスを避けるためにも使用するべき。
 +自由形式の場合はuse文の後に使用。
 +<code fortran>
 +program hoge
 +  use hoge_lib
 +  implicit none
 +  real(8) a,b,c,
 +  ...
 +</​code>​
 +===== 装置番号 =====
 +write(?,​*)やread(?,​*)の?​に入る番号。
 +通常、5が標準入力(キーボード)、6が標準出力(ディスプレイ上の端末)に使用されるので、
 +5と6を使ってopenするのは避けるべき。
 +slatecのI1MACHを使えば、標準入力、標準出力の番号が調べられる。
 +装置番号にはcharacterも入る。
 +
 +
 +
 +===== 連番のファイル名をつける。 =====
 +ファイル名をcharacter変数に代入して使う。ファイル名の変更にはwrite文を使う。
 +逐次計算に使える。
 +<code fortran>
 +character(len=12) filename
 +...
 +do i=1,100
 +  write(filename,'​(a,​i4.4,​a)'​) '​hoge',​i,'​.dat'​
 +  open(10,​file=filename)
 +  ...
 +    write(10,*) ...
 +  ...
 +  close(10)
 +end do
 +</​code>​
 +
 +
 +
 +===== 簡単なシェルスクリプト =====
 +連続してプログラムを実行したいとき、shファイルが便利。
 +端末で入力する内容をあらかじめファイルに書いておき、それを実行すれば、上から順に実行してくれる。
 +windowsで言うバッチファイル。
 +
 +<code bash>
 +gfortran hoge.f90
 +cd case10
 +../a.out
 +cd ../case20
 +../a.out
 +cd ../case30
 +../a.out
 +</​code>​
 +<​code>​
 +$ sh hoge.sh
 +</​code>​
 +
 +
  
fortran.1256820876.txt.gz · 最終更新: 2009/10/29 21:54 by saito
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0