ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

FILEPUT

FILEPUTコマンドは、テキスト式で指定されるデータをWRITEまたはAPPENDモードで開かれているファイルに書き込むコマンドです。

構文

FILEPUT fileunit {text-exp|FROM infileunit} [EOL|NOEOL]

パラメータ

fileunit

FILEOPENファンクションを事前にコールすることにより、またはOUTFILEコマンドにより、書込み(WRITEまたはAPPENDモード)用に開かれたファイルに対して割り当てられるファイル・ユニット番号。

text-exp

出力用のデータを含むテキスト式。


注意:

NTEXTデータがファイルに書き込まれるように指定した場合、FILEPUTはテキストをファイルのキャラクタ・セットに変換します。キャラクタ・セットで表すことができないNTEXT文字がある場合、データが失われます。

FROM infileunit

FILENEXTファンクションによって、infileunitから読み取られるレコードをfileunitで指定されるファイルに直接送信します。この句を指定すると、FILEVIEWコマンドでデータ処理を継続しながら、選択したレコードを出力ファイルに書き込むことができます。


注意:

キーワード句FROM infileunitを使用する場合、バイナリ・ファイルとバイナリ以外のファイルを混在させることはできません。BINARYキーワードでいずれかのファイルが開かれた場合、他のファイルもバイナリである必要があります。

EOL

(デフォルト)改行文字が出力文字列に追加されてファイルに書き込まれることを指定します。

NOEOL

改行文字がファイルに書き込まれるテキストに追加されないことを指定します。

例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