!--a11y-->
書込用にファイルをオープンする場合は、
OPEN DATASET 命令の FOR OUTPUT オプションを使用してください。構文
OPEN DATASET <dsn> FOR OUTPUT.
この命令で書込ファイルを開きます。ファイルが存在しない場合は、作成されます。ファイルが存在していて、クローズされている場合は、その内容が削除されます。ファイルが存在していてオープンされている場合は(読込、書込、追加のいずれのモードでも)、ファイルのポインタは先頭にリセットされます。ファイルをオープンすることができる場合は、
SY-SUBRC に0が設定され、その他の場合には8が設定されます。
DATA: MESS(60),
FNAME(10) VALUE '/tmp'.
OPEN DATASET FNAME FOR OUTPUT MESSAGE MESS.
IF SY-SUBRC <> 0.
WRITE: 'SY-SUBRC:', SY-SUBRC,
/ '
UNIX
で稼動する SAP システムの場合、上記の例の出力は以下のようになります。

指定されたパスがディレクトリのため開けません。

以下のプログラムは、書込用にファイルをオープンする際にファイルのポインタがどのように設定されるかを示しています。ただし、すでにオープンされているファイルを再度オープンする前には
CLOSE 命令を使用するようにしてください。(ファイルのクローズについては、 ファイルのクローズを参照してください)。DATA FNAME(60) 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.
このプログラムの出力は以下のようになります。
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
この例における“
myfile ”への操作は以下のようになります。