Öffnen einer Datei zum Schreiben
Um eine Datei zum Schreiben zu öffnen, verwenden Sie den Zusatz FOR OUTPUT:
Syntax
OPEN DATASET <dsn> FOR OUTPUT.
Diese Anweisung öffnet eine Datei zum Schreiben. Wenn die Datei nicht vorhanden ist, wird sie angelegt. Wenn sie vorhanden und geschlossen ist, wird ihr Inhalt überschrieben. Wenn die Datei bereits vorhanden und geöffnet ist (zum Lesen, Schreiben oder Schreiben an das Ende der Datei), wird die Positionierung an den Anfang der Datei zurückgesetzt. Wenn das System die Datei öffnen kann, gibt SY-SUBRC 0 zurück. Anderenfalls gibt SY-SUBRC 8 zurück.
DATA: mess(60) TYPE c,
fname(10) TYPE c VALUE '/tmp'.
OPEN DATASET fname FOR OUTPUT MESSAGE mess.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC:', sy-subrc,
/ 'System Message:', mess.
ENDIF.
Wenn das SAP-System unter UNIX läuft, sieht die Ausgabe dieses Beispiels so aus:
Das System kann die Datei nicht öffnen, da es sich um ein Verzeichnis handelt.
Das folgende Programm zeigt, wie die Positionierung durchgeführt wird, wenn eine Datei zum Schreiben geöffnet wird. Es wäre jedoch besserer Programmierstil, bei bereits geöffneten Dateien immer die CLOSE-Anweisung zu benutzen, bevor sie erneut geöffnet werden (Informationen zum Schließen von Dateien finden Sie in
Schließen einer Datei).DATA fname(60) TYPE c VALUE 'myfile'.
DATA num TYPE i.
OPEN DATASET fname FOR OUTPUT.
DO 10 TIMES.
num = num + 1.
TRANSFER num TO fname.
ENDDO.
PERFORM input.
OPEN DATASET fname FOR OUTPUT.
num = 0.
DO 5 TIMES.
num = num + 10.
TRANSFER num TO fname.
ENDDO.
PERFORM input.
CLOSE DATASET fname.
OPEN DATASET fname FOR OUTPUT.
num = 0.
DO 5 TIMES.
num = num + 20.
TRANSFER num TO fname.
ENDDO.
PERFORM input.
FORM input.
SKIP.
OPEN DATASET fname FOR INPUT.
DO.
READ DATASET fname INTO num.
IF sy-subrc <> 0.
EXIT.
ENDIF.
WRITE / num.
ENDDO.
ENDFORM.
Ausgabe:
1
2
3
4
5
6
7
8
9
10
10
20
30
40
50
6
7
8
9
10
20
40
60
80
100
In diesem Beispiel geschieht folgendes mit der Datei "myfile":