コンテンツフレーム起動

ファイルからのデータの読込 文書を SAP ライブラリストラクチャに組み込む

アプリケーションサーバ上のファイルからデータを読み込むには、 READ DATASET 命令を以下のように使用します。

構文

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

この命令でデータをファイル <dsn> から変数 <f> に読み込みます。ファイルから読み込むデータの格納先である変数を決定するためには、ファイルの構造を知っておかなければなりません。

OPEN DATASET 命令で転送モードを指定することができます。ファイルが読込用にオープンされていない場合、システムはバイナリモードまたは、このファイルに対する最後の OPEN DATASET 命令で使用したオプションでオープンしようとします。ただし、ファイルのオープンでは、できるだけ OPEN DATASET 命令を使用するようにしてください。 OPEN DATASET 命令とファイルの命名については、 ファイルのオープンに記述してあります。

読込操作に成功すると、 SY-SUBRC には0が設定されます。ファイルを最後まで読み込むと SY-SUBRC には4が設定されます。ファイルを開くことができないときは、 SY-SUBRC には8が設定されます。

バイナリモードで作業する場合に LENGTH オプションを使用すると、 <f> に転送された実データの長さがわかります。その長さは変数 <len> に設定されます。

例

DATA FNAME(60) VALUE 'myfile'.

DATA: TEXT1(12) VALUE 'abcdefghijkl',
TEXT2(5),
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.

この例の出力は以下のようになります。

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

この例では、ファイル“ myfile ”に項目 TEXT1 から 12 バイトを転送しています。次に、このファイルから5バイト単位のデータを TEXT2 に読み込んでいます。ファイルの最後まで読み込んだ後では、 TEXT2 の最後の3バイトには NULL が設定されていることと、実際に転送された長さが項目 LENG に入っていることに注意してください。

テキストモードで作業している場合は、 LENGTH オプションを使用してファイル内の現在の行の実際の長さを調べることができます。行の長さは、変数 <len> に設定されます。この作業を行うため、ファイルの現在位置から次の行終端マーカまでのバイト数がカウントされます。

例

DATA FNAME(60) VALUE 'myfile'.

DATA: TEXT1(4) VALUE '1234 ',
TEXT2(8) VALUE '12345678',
TEXT3(2),
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.

この例の出力は以下のようになります。

12 4

12 8

この例では、文字列 TEXT1 TEXT2 がテキストモードでファイル“ myfile ”に書き込まれます。次に、書き込んだデータを長さ2の文字列 TEXT3 に読み込んでいます。データが格納されている部分の長さが項目 LENG に設定されます。

 

 

 

コンテンツフレーム終了