Einlesen von ASCII-Daten < Fortran < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 20:02 Mi 05.12.2007 | Autor: | O6elix |
Abend schön,
ich bin zwar nicht wirklich bewandert in den Künsten der Programmierung, aber die Frage ist mir trotzdem etwas peinlich: Wie liest man ASCII-Daten in Fortran ein?
Ich hab hier eine Datei die ein Array (72 x 76) im ASCII-Format enthält. Das Format der Zahlen ist 10.8f (das ist doch in Fortran F10.8, oder?) und als Delimiter sind Kommata gewählt.
Wenn ich nun versuche, diese Datei mithilfe von Fortran einzulesen und scheitere kläglich. Was mach ich falsch? Wie mache ich es besser?
PROGRAM ascii_bin
implicit none
INTEGER I,IE,J,JE
PARAMETER(IE=72,JE=76)
REAL DEPTU
DIMENSION DEPTU(IE,JE)
[mm] OPEN(36,FILE='tiefe_v.txt',STATUS='OLD',
[/mm]
& FORM='FORMATTED',ACCESS='SEQUENTIAL')
DO J = 1, JE
READ(36, 100 ) ( DEPTU(I,J), I = 1,IE )
ENDDO
100 FORMAT('JE(F10.8)')
STOP
END
Insgesamt sollen später 10 verschiedene ASCIIs eingelesen und in ein Binärfile geschrieben werden.
Danke schonmal,
O6elix
P.S.: Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Dateianhänge: Anhang Nr. 1 (Typ: txt) [nicht öffentlich]
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:03 Do 06.12.2007 | Autor: | rainerS |
Hallo O6elix!
> ich bin zwar nicht wirklich bewandert in den Künsten der
> Programmierung, aber die Frage ist mir trotzdem etwas
> peinlich: Wie liest man ASCII-Daten in Fortran ein?
>
> Ich hab hier eine Datei die ein Array (72 x 76) im
> ASCII-Format enthält. Das Format der Zahlen ist 10.8f (das
> ist doch in Fortran F10.8, oder?) und als Delimiter sind
> Kommata gewählt.
> Wenn ich nun versuche, diese Datei mithilfe von Fortran
> einzulesen und scheitere kläglich. Was mach ich falsch? Wie
> mache ich es besser?
Zwei Tipps: erstens bin ich mir ziemlich sicher, dass der Parameter JE in der Formatanweisung nicht durch 76 ersetzt wird, weil er in einer Zeichenkettenkonstanten auftritt.
Zweitens bietet sich für das Einlesen dieser Daten list-directed formatting an:
READ(36, * ) ( DEPTU(I,J), I = 1,IE )
Referenz: http://www.fortran.com/F77_std/rjcnf-13.html#sh-13.6
Eine etwas leichter lesbare Beschreibung habe ich hier gefunden.
Wenn du unbedingt ein Format benutzen willst, musst du über die Kommas hinweg positionieren; das müsste mit
100 FORMAT('76(F10.8,1X)')
funktionieren. (Bin mir aber nicht ganz sicher, es ist ewig her, dass ich Fortran programmiert habe).
Viele Grüße
Rainer
|
|
|
|