Fortran 90 wie man sehr lange Ausgabezeilen unterschiedlicher Länge schreibt

Ich habe stundenlang im Internet nach einer Lösung für dieses Problem gesucht und kann nichts finden. Ich habe versucht, eine unformatierte Ausgabe in eine CSV-Ausgabedatei mit mehreren sehr langen Zeilen unterschiedlicher Länge und mehreren Datentypen zu schreiben. Ich versuche zuerst einen langen Header zu schreiben, der die Variablen anzeigt, die unten geschrieben werden, getrennt durch Kommas. Dann schreibe ich in die Zeilen darunter die im Header angegebenen Werte. Bei sequenziellem Zugriff werden die langen Ausgabezeilen jedoch in mehrere kürzere Zeilen aufgeteilt, was ich mir nicht erhofft habe. Ich habe versucht, die Zeilenlänge mithilfe von recl in der open-Anweisung zu steuern, aber dies fügte nach der Ausgabe nur eine Reihe von unlesbarem Text und Symbolen hinzu, wobei dasselbe Problem weiterhin auftrat. Ich habe auch versucht, direkten Zugriff zu verwenden, aber die Leitungen sind nicht gleich lang, sodass dies auch nicht funktioniert. Ich habe in Fortran2003 über die Verwendung von Stream I / O gelesen, aber ich verwende Fortran90, daher funktioniert das auch nicht. Ich verwende Fortran 90 mit der Plato-IDE, die den FTN95-Compiler verwendet. Ich habe ein Beispielprogramm eingefügt, das dem ähnlich ist, was ich unten ausführen möchte, und ein Array und einen Dummy-Text verwendet. Außerdem habe ich die Ausgabe darunter eingefügt, um das Problem zu veranschaulichen. Weiß jemand, wie ich nur eine Zeile pro Schreibanweisung kann? Jede Hilfe wäre sehr dankbar.

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

Hier ist die Ausgabe für das obige Programm (ohne 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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage