コンテンツフレーム起動

テキストモードの指定 文書を SAP ライブラリストラクチャに組み込む

テキストモードでファイルを処理するには、 OPEN DATASET 命令の IN TEXT MODE オプションを以下のように使用します。

構文

OPEN DATASET <dsn> FOR .... IN TEXT MODE.

テキストモードで開いているファイルからデータを読み込んだり、書き込んだりすると、データは行単位で転送されます。ファイルは行構造を持っているとみなされます。

TRANSFER 命令ごとに( TRANSFER 命令の詳細については、 ファイルへのデータの書込を参照してください)、後続の空白を除くすべてのバイトがファイルに転送され、改行マーカがそれらの後に置かれます。

READ DATASET 命令を実行すると( READ DATASET 命令については、 ファイルからのデータの読込を参照してください)、次の改行マーカが出現するまでのすべてのバイトが読み出されます。目標項目が小さすぎる場合、行は切取られます。目標項目が行よりも大きい場合は、目標項目の右側に空白文字が埋められます。

文字列をファイルに書き込みたい場合や、既存のファイルが行ベースで書式化されている場合は、テキストモードを使う必要があります。テキストモードを使用すると、たとえば、アプリケーションサーバ上で任意のテキストエディタを使って作成したファイルを読み込むことができます。

例

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

DATA FNAME(60) VALUE 'myfile'.

DATA: TEXT(4),
HEX TYPE X.

OPEN DATASET FNAME FOR OUTPUT IN TEXT MODE.

TRANSFER '12 ' TO FNAME.
TRANSFER '123456 9 ' TO FNAME.
TRANSFER '1234 ' TO FNAME.

OPEN DATASET FNAME FOR INPUT IN TEXT MODE.

READ DATASET FNAME INTO TEXT.
WRITE / TEXT.
READ DATASET FNAME INTO TEXT.
WRITE TEXT.
READ DATASET FNAME INTO TEXT.
WRITE TEXT.

OPEN DATASET FNAME FOR INPUT IN BINARY MODE.

SKIP.
DO.
READ DATASET FNAME INTO HEX.
If SY-SUBRC <> 0.
EXIT.
ENDIF.
WRITE HEX.
ENDDO.

このプログラムの出力は以下のようになります。

12 1234 1234

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

この例では、ファイル“ myfile ”を書込用にテキストモードでオープンしています。それぞれの長さが 10 の3つのリテラル文字列がファイルに転送されます。テキストモードで書込ファイルを開くと、保存された行が長さ4の項目 TEXT に読み込まれます。最初の行が右側から2つの空白文字とともに入ります。2行目の最後の5文字は切取られています。ファイルをバイナリモードで開いて 16 進項目 HEX に読み込むと、実際の行構造がわかります。 31 から 36 までの数字は、数字1から6の ASCII 表現であり、 20 は空白文字を表わします。各行の最後には OA というマークがついています。列リテラルの後続のスペースがファイルに書き込まれていないことに注意してください。

 

 

コンテンツフレーム終了