この文書の現在のバージョンと選択したバージョンの差分を表示します。
Both sides previous revision Previous revision Next revision | Previous revision | ||
fortran [2009/10/29 21:55] 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行分だけ. |