この問題の解決策を求めてインターネットを何時間もかけて探しましたが、何も見つかりません。フォーマットされていない出力を、さまざまな長さと複数のデータ型の複数の非常に長い行を持つ CSV 出力ファイルに書き込もうとしています。最初に、下に書き込まれる変数を示す長いヘッダーをコンマで区切って書き込もうとしています。その下の行に、ヘッダーで指定された値を書いています。ただし、順次アクセスでは、長い出力行が複数の短い行に分割されます。これは、私が望んでいたことではありません。open ステートメントで recl を使用して行の長さを制御しようとしましたが、出力の後に文字化けしたテキストと記号が大量に追加されただけで、同じ問題が引き続き発生しました。私も直接アクセスを使用しようとしましたが、行の長さが同じではないため、どちらも機能しません。Fortran2003 でストリーム I/O を使用することについて読んだことがありますが、Fortran90 を使用しているため、それも機能しません。FTN95 コンパイラを使用する Plato IDE で Fortran 90 を使用しています。配列といくつかのダミーテキストを使用して、以下でやりたいことに似たサンプルプログラムを含めました。また、問題を示す出力を以下に含めました。writeステートメントごとに1行だけできる方法を知っている人はいますか? どんな助けでも大歓迎です。writeステートメントごとに1行だけできる方法を知っている人はいますか? どんな助けでも大歓迎です。writeステートメントごとに1行だけできる方法を知っている人はいますか? どんな助けでも大歓迎です。
module types
integer, parameter :: dp=selected_real_kind(15)
end module types
program blah
use types
use inputoutput
implicit none
integer :: i
character(50)::fileNm
integer :: unitout2=20
real(dp), dimension(100) :: bigArray
fileNm='predictout2.csv'
open(unit=unitout2,file=fileNm,status="replace")
do i=1,100
bigArray(i)=i
end do
write(unitout2,*)"word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,&
&word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,&
&word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word"
write(unitout2,*)bigArray
close(unitout2)
end program
上記のプログラムの出力は次のとおりです (recl なし)。
word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word
,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,word,wo
rd,word,word,word,word,word
1.00000000000 2.00000000000 3.00000000000 4.00000000000
5.00000000000 6.00000000000 7.00000000000 8.00000000000
9.00000000000 10.0000000000 11.0000000000 12.0000000000
13.0000000000 14.0000000000 15.0000000000 16.0000000000
17.0000000000 18.0000000000 19.0000000000 20.0000000000
21.0000000000 22.0000000000 23.0000000000 24.0000000000
25.0000000000 26.0000000000 27.0000000000 28.0000000000
29.0000000000 30.0000000000 31.0000000000 32.0000000000
33.0000000000 34.0000000000 35.0000000000 36.0000000000
37.0000000000 38.0000000000 39.0000000000 40.0000000000
41.0000000000 42.0000000000 43.0000000000 44.0000000000
45.0000000000 46.0000000000 47.0000000000 48.0000000000
49.0000000000 50.0000000000 51.0000000000 52.0000000000
53.0000000000 54.0000000000 55.0000000000 56.0000000000
57.0000000000 58.0000000000 59.0000000000 60.0000000000
61.0000000000 62.0000000000 63.0000000000 64.0000000000
65.0000000000 66.0000000000 67.0000000000 68.0000000000
69.0000000000 70.0000000000 71.0000000000 72.0000000000
73.0000000000 74.0000000000 75.0000000000 76.0000000000
77.0000000000 78.0000000000 79.0000000000 80.0000000000
81.0000000000 82.0000000000 83.0000000000 84.0000000000
85.0000000000 86.0000000000 87.0000000000 88.0000000000
89.0000000000 90.0000000000 91.0000000000 92.0000000000
93.0000000000 94.0000000000 95.0000000000 96.0000000000
97.0000000000 98.0000000000 99.0000000000 100.000000000