Anfang des Inhaltsbereichs

Daten aus Dateien lesen Dokument im Navigationsbaum lokalisieren

Um Daten aus einer Datei auf dem Anwendungsserver zu lesen, verwenden Sie die Anweisung READ DATASET:

Syntax

READ DATASET <dsn> INTO <f> [LENGTH <len>].

Diese Anweisung liest Daten aus der Datei <dsn> in die Variable <f>. Um festlegen zu können, in welche Variable Sie Daten aus einer Datei einlesen, müsen Sie die Struktur der Datei kennen.

Sie können den Übertragungsmodus mit der Anweisung OPEN DATASET angeben. Wenn die Datei nicht zum Lesen geöffnet wird, versucht das System, sie im Binärmodus zu öffnen. Es ist jedoch besser, eine Datei nur mit der Anweisung OPEN DATASET zu öffnen. Die Anweisung OPEN DATASET und die Namensgebung für Dateien werden in Öffnen einer Datei beschrieben.

Nach einer erfolgreichen Leseoperation gibt SY-SUBRC 0 zurück. Wenn das Ende der Datei erreicht ist, gibt SY-SUBRC 4 zurück. Wenn die Datei nicht geöffnet werden kann, gibt SY-SUBRC 8 zurück.

Wenn Sie im Binärmodus arbeiten, können Sie den Zusatz LENGTH verwenden, um die Länge der nach <f> übertragenen Daten herauszufinden. Das System setzt den Wert der Variable <len> auf diese Länge.

Beispiel

DATA fname(60) TYPE c VALUE 'myfile'.

DATA: text1(12) TYPE c VALUE 'abcdefghijkl',
      text2(5) TYPE c,
      leng TYPE i.

OPEN DATASET fname FOR OUTPUT IN BINARY MODE.
TRANSFER text1 TO fname.
CLOSE DATASET fname.

OPEN DATASET fname FOR INPUT IN BINARY MODE.
DO.
  READ DATASET fname INTO text2 LENGTH LENG.
  WRITE: / sy-subrc, text2, leng.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.
ENDDO.
CLOSE DATASET fname.

Ausgabe:

0 abcde 5
0 fghij 5
4 kl### 2

In diesem Beispiel wird die Datei "myfile" mit 12 Bytes aus dem Feld TEXT1 gefüllt. Dann wird sie in Portionen von 5 Bytes in das Feld TEXT2 eingelesen. Beachten Sie, daß das System die letzten drei Bytes von TEXT2 mit Nullen auffüllt, nachdem das Ende der Datei erreicht ist, und daß die Anzahl der übertragenen Bytes im Feld LENG angegeben wird.

Wenn Sie im Textmodus arbeiten, können Sie den Zusatz LENGTH benutzen, um die Länge der aktuellen Zeile in der Datei herauszufinden. Das System setzt den Wert der Variable <len> auf die Zeilenlänge. Dafür zählt das System die Anzahl der Bytes von der aktuellen Position bis zur nächsten Zeilenendemarkierung in der Datei.

Beispiel

DATA fname(60) TYPE c VALUE 'myfile'.

DATA: text1(4) TYPE c VALUE '1234    ',
      text2(8) TYPE c VALUE '12345678',
      text3(2) TYPE c,
      leng TYPE i.

OPEN DATASET fname FOR OUTPUT IN TEXT MODE.
   TRANSFER: text1 TO fname,
             text2 TO fname.
CLOSE DATASET fname.

OPEN DATASET fname FOR INPUT IN TEXT MODE.
   DO 2 TIMES.
      READ DATASET fname INTO text3 LENGTH leng.
      WRITE: / text3, leng.
   ENDDO.
CLOSE DATASET fname.

Ausgabe:

12 4

12 8

In diesem Beispiel werden die Zeichenketten TEXT1 und TEXT2 im Textmodus in die Datei "myfile" geschrieben. Dann werden sie in die Zeichenkette TEXT3 (Länge 2) eingelesen. Die Speicherlänge der Zeilen wird in das Feld LENG geschrieben.

 

Ende des Inhaltsbereichs