コンテンツフレーム起動

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

アプリケーションサーバ上のファイルにデータを書き込む場合は、 TRANSFER 命令を使用してください。

構文

TRANSFER <f> to <dsn> [LENGTH <len>].

この命令によって項目 <f> の値がファイル <dsn> に書き込まれます。 OPEN DATASET 命令で転送モードを指定することができます。書き込むファイルが開かない場合は、システムの側でバイナリモードか、またはこのファイルに使用される最終 OPEN DATASET 命令のオプションを使用して開きます。ただし、ファイルのオープンでは、できるだけ OPEN DATASET 命令を使用するようにしてください。 OPEN DATASET 命令とファイルの命名については、 ファイルのオープンに記述してあります。項目 <f> のデータ型は基本型か、またはコンポーネントとして内部テーブルを含んでいない項目列が可能です。一回の実行で内部テーブルをファイルに書き込むことはできません。

LENGHT オプションを使用すると、転送するデータの長さ <len> を指定することができます。指定すると、最初の <len> バイトがファイルに書き込まれます。 <len> が小さすぎると、不要なバイトは切り捨てられます。 <len> が大きすぎる場合は、転送する行の右から空白文字が設定されます。

例

以下のプログラムは、内部テーブルをファイルに書き込む方法を示しています。

DATA FNAME(60) VALUE 'myfile'.

TYPES: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.

TYPES ITAB TYPE LINE OCCURS 10.

DATA: LIN TYPE LINE,
TAB TYPE ITAB.

DO 5 TIMES.
LIN-COL1 = SY-INDEX.
LIN-COL2 = SY-INDEX ** 2.
APPEND LIN TO TAB.
ENDDO.

OPEN DATASET FNAME FOR OUTPUT.
LOOP AT TAB INTO LIN.
TRANSFER LIN TO FNAME.
ENDLOOP.
CLOSE DATASET FNAME.

OPEN DATASET FNAME FOR INPUT.
DO.
READ DATASET FNAME INTO LIN.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
WRITE: / LIN-COL1, LIN-COL2.
ENDDO.

CLOSE DATASET FNAME.

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

1 1
2 4
3 9
4 16
5 25

上記の例では、項目文字列 LIN と内部テーブル TAB は行タイプ LINE を使用して作成されます。内部テーブル TAB に書き込むと、行単位でファイル“ myfile ”に書き込まれます。これにより、ファイルが項目文字列 LIN に読み込まれ、 LIN の内容が出力画面に書き込まれます。

例

以下のデモプログラムは、 ASCII コードを採用した UNIX 上で動作する SAP システム用に書かれています。

DATA FNAME(60) VALUE 'myfile'.

DATA: TEXT1(4) VALUE '1234',
TEXT2(8) VALUE '12345678',
HEX TYPE X.

OPEN DATASET FNAME FOR OUTPUT IN TEXT MODE.
TRANSFER: TEXT1 TO FNAME LENGTH 6,
TEXT2 TO FNAME LENGTH 6.
CLOSE DATASET FNAME.

OPEN DATASET FNAME FOR INPUT.
DO.
READ DATASET FNAME INTO HEX.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
WRITE HEX.
ENDDO.
CLOSE DATASET FNAME.

上記の例の場合、出力は以下のように表示されます。

31 32 33 34 20 20 0A 31 32 33 34 35 36 0A

この例では、2つの文字列 TEXT1 TEXT2 はテキストモードでファイル“ myfile ”に書き込まれます。出力長として指定された値は6です。ファイルをバイト単位で 16 進項目に読み込むことによって、ファイルの保存方法がわかります。 31 から 36 までの数字は数字を表す1から6までの文字の ASCII 形式です。 20 はスペースを表し、 OA は行の終わりを示しています。 TEXT1 には右側からスペースが2つ入ります。また TEXT2 の2つの位置は切り捨てられます。

 

 

 

コンテンツフレーム終了