FILEPUTコマンドは、テキスト式で指定されるデータをWRITEまたはAPPENDモードで開かれているファイルに書き込むコマンドです。
パラメータ
FILEOPENファンクションを事前にコールすることにより、またはOUTFILEコマンドにより、書込み(WRITEまたはAPPENDモード)用に開かれたファイルに対して割り当てられるファイル・ユニット番号。
出力用のデータを含むテキスト式。
|
注意: NTEXTデータがファイルに書き込まれるように指定した場合、FILEPUTはテキストをファイルのキャラクタ・セットに変換します。キャラクタ・セットで表すことができないNTEXT文字がある場合、データが失われます。 |
FILENEXTファンクションによって、infileunitから読み取られるレコードをfileunitで指定されるファイルに直接送信します。この句を指定すると、FILEVIEWコマンドでデータ処理を継続しながら、選択したレコードを出力ファイルに書き込むことができます。
|
注意: キーワード句FROM infileunitを使用する場合、バイナリ・ファイルとバイナリ以外のファイルを混在させることはできません。BINARYキーワードでいずれかのファイルが開かれた場合、他のファイルもバイナリである必要があります。 |
(デフォルト)改行文字が出力文字列に追加されてファイルに書き込まれることを指定します。
改行文字がファイルに書き込まれるテキストに追加されないことを指定します。
例
例9-124 FILEPUTを使用したファイルへのデータの書込み
次の例は、3か月間の販売データのファイルを書き込むプログラムです。ファイルの名前は最初の引数です。このプログラムの抜粋は、ファイルを開いて各行のデータをファイルに書き込み、ファイルを閉じます。このプログラムは、プログラム名の後のステートメント行で4つの引数(入力データのファイル名および3つの月の名前)を取ります。
DEFINE salesdata PROGRAM
LD Write Sales Data To File. Args: File Name, 3 Month Names
PROGRAM
VARIABLE fil.unit INTEGER
VARIABLE fil.text TEXT
fil.unit = FILEOPEN(ARG(1) WRITE)
LIMIT month TO &ARG(2) &ARG(3) &ARG(4)
LIMIT product TO ALL
LIMIT district TO ALL
COMMAS = NO
DECIMALS = 0
FOR district
DO
FOR product
DO
fil.text = product
FOR month
fil.text = JOINCHARS(fil.text ' ' -
CONVERT(sales TEXT))
FILEPUT fil.unit fil.text
DOEND
FILEPUT fil.unit ''
DOEND
FILECLOSE fil.unit
END
例9-125 データの事前処理
次の例は、各地区における販売製品に関する1996年の売上高のデータファイルを使用します。ここでは、Aで始まるレコードのみを対象として処理しますが、残りのレコードは後で処理するために別のファイルに保存します。次のプログラムの抜粋は、FILENEXTを使用して各レコードを取得し、FILEVIEWを使用してそのレコードの種類を確認します。2番目のFILEVIEW文はレコードがタイプAの場合の処理です。それ以外のレコードはFILEPUT文によって出力ファイルに書き込まれます。
DEFINE rectype VARIABLE ID
LD One Letter Code Identifying The Record Type
VARIABLE in.unit INTEGER
VARIABLE out.unit INTEGER
. . .
in.unit = FILEOPEN( GET(TEXT PROMPT 'Input Filename: ') READ)
out.unit = FILEOPEN( GET(TEXT PROMPT 'Output Filename: ') -
WRITE)
WHILE FILENEXT(in.unit)
DO
FILEVIEW in.unit WIDTH 1 rectype
IF rectype EQ 'A'
THEN FILEVIEW COLUMN 2 WIDTH 8 district SPACE 2 -
WIDTH 8 product ACROSS month year Yr96: saleS
ELSE FILEPUT out.unit FROM in.unit
DOEND
FILECLOSE in.unit
FILECLOSE out.unit
. . .
END