OPEN DATASET - position
... AT POSITION pos ...
This addition sets the file pointer at the position specified in
pos expects a numeric data object. Numbers with a value greater than the
value range of the data type
i can also be entered.
The position is specified in bytes; the start of the file corresponds to position 0. If
contains the value -1, the position is at the end of the file. For all other negative values, the behavior is undefined.
The following cases need to be distinguished:
posis greater than the length of the file, the file pointer is positioned outside the file. Unless the position is changed, no data can be read.
posis greater than the length of the file, the next time the file is written in, it is filled with hexadecimal 0 from the end of the file to the specified position, and the new content is written after that.
For file sizes greater than 2 GB, a position
posof the data type
iis not sufficient for positioning in the whole file, and
decfloatmust be used instead.
The positioning can be overwritten by the statement
SET DATASET. In particular, for positioning the file pointer at the end of the file,
SET DATASETshould be used instead of entering the value -1 in
Free specified positions are more suitable for binary files than for text files. In the case of text files, positions depend on the character format,
end-of-line marking, and a possible byte order mark (BOM) in UTF-8 files.
test.dat is created as a text file, then filled with data, changed, and read. Since each
TRANSFER statement appends an
end-of-line selection to the written content,
the content of the file is double-lined after the change. The first line contains "12ABCD".
The second line contains "890". The character "7" is overwritten by the end-of-line selection of the first line.
DATA(file) = `test.dat`. OPEN DATASET file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT WITH SMART LINEFEED. TRANSFER `1234567890` TO file. CLOSE DATASET file. OPEN DATASET file FOR UPDATE IN TEXT MODE ENCODING DEFAULT WITH SMART LINEFEED AT POSITION 2. TRANSFER `ABCD` TO file. CLOSE DATASET file. ... OPEN DATASET file FOR INPUT IN TEXT MODE ENCODING DEFAULT WITH SMART LINEFEED. DATA: result TYPE string, output TYPE TABLE OF string WITH EMPTY KEY. WHILE sy-subrc = 0. READ DATASET file INTO result. APPEND result TO output. ENDWHILE. CLOSE DATASET file. cl_demo_output=>display_data( output ). DELETE DATASET file.