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