- ベストアンサー
【Fortran77】データ行数のカウント方法は?
- Fortran77で複数のデータファイルの行数をカウントする方法について教えてください。
- 具体的には、複数のデータファイルの行数を個別にカウントし、計算結果を別ファイルに出力するFortranプログラムを作成したいです。
- 現在はデータファイルを個別に確認して行数をカウントしており、効率化を図りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
データを読みながらカウントすればよいのでは? 前回の回答( http://qanda.rakuten.ne.jp/qa4425688.html )を変更して 以下のようにすればカウントできます。 (エラー処理などは入っていませんので適宜入れてください) dimension a(1000,4) open(1,file="data.dat") i = 1 100 continue read(1,*, END=200) (a(i,j),j=1,4) i = i + 1 goto 100 200 continue write(6,*) "データ数 = " , i do 300 k = 1, i write(6, *) (a(k,j),j=1,4) 300 continue
その他の回答 (2)
- Tanigucchi
- ベストアンサー率70% (43/61)
空行を挟むデータを読み込むときにはフォーマット付文字列で読み込みます。 但し、古いFortranの知識ですので、もっと良い方法があるかもしれません。 character*80 c dimension a(8,4) open(1,file="data.dat") i = 1 100 continue read(1,'(A80)', END=200) c if(len_trim(c) .gt. 0) then read(c, *) (a(i,j),j=1,4) end if i = i + 1 goto 100 200 continue1234
お礼
たびたびありがとうございます! こちらも教えていただいた方法でうまくいきました。
- chukenkenkou
- ベストアンサー率43% (833/1926)
>それぞれのデータセットの行数をカウントする必要があります(計算の必要上)。 事前に行数を知っていく必要があるって、何を計算するのでしょうか?
補足
言葉が足りず申し訳ありません。 直近ではまだ計算までは行わないのですが、 (なので、回答を急がない質問なのですが) いずれデータ点の補間や平均値を計算できるようプログラムを改良していく予定です。 補間で使うかは不明なのですが、平均の計算には不可欠なので、 データ行数の取得までプログラムの中で行いたい、という意味です。
補足
前回にひきつづきありがとうございます! 読み込むときにカウントすればよいのですね。 教えていただいた方法でうまくいきました。 これは質問の補足というより参考程度に聞きたいのですが、 上記の方法で前回の質問のような、空行を挟むデータを読み込むときには、 空行を除いた数がカウントされるようなのですが、 空行を含めた行数をカウントする場合はどのように指定すればよいのでしょうか?