- 締切済み
FORTRANでファイルへの出力
FORTRAN77で,以下のような出力をしたいのですが,どうしたらいいかわかりません.何かいい案があれば,教えてください. 繰り返し処理の途中で計算を止めても,何ステップまで計算したかを第一行目に出力したいです. ex.)繰返し終値が1000として,456ステップで計算を止めたとき, ----------出力ファイル-------------- 456ステップまで計算されています. (↑何ステップまで計算されたかを 第一行に記入したいです.) step 1,データ step 2,データ : : step 456,データ ----(簡単ですが)考えてたプログラム------- OPEN(10,○) WRITE(10,○) ←ここを悩んでいます. DO I=1,1000 WRITE(10,○)'step',I,データ CONTINUE
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- k-pix
- ベストアンサー率51% (50/98)
#2のk-pixです。 以下のような感じでいかがでしょうか? 例えば、データが256byte以下のサイズだとすると ----- character*256 dat(1000) do i = 1, 1000 !ここでデータ計算 !何かしらキー入力があれば、ループを抜ける continue open(10, *) write(10, *) i, 'ステップまで計算' do j = 1, i !write(10, *) 'step', i, dat(i) continue -----
- k-pix
- ベストアンサー率51% (50/98)
ループ中にWRITE文を入れるのではなく、キー入力があればループを抜けるようにし、ループを抜けた後、まずステップ数を記録し、その後、別のループで一気にデータを書き込むというのはいかがでしょうか? データの保持に関しては、メモリ上が可能なら配列を取るとか、メモリ上が無理なのであれば、データを一旦別ファイルに仮出力しておけばよいと思います。
お礼
ありがとうございます. 申し訳ありませんが,もう少し具体的に書いてもらえると助かります.
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 下記サイトをご参照下さい。 http://wwwst.sc.musashi-tech.ac.jp/~bulletin/fort77.htm#Item7 WRITE文の第二引数はフォーマットです。上記例3では、フォーマットをきちんと書いていますが、フォーマットを気にしなければ、「WRITE(10,*)」でもOKです。 では。
お礼
ありがとうございます. WRITE文の○のところを悩んでいるわけではなく,第一行目の出力について悩んでいます.
お礼
ありがとうございます. 参考にさせていただきます.