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

前
 
次
 

FILENEXT

FILENEXTファンクションは、レコードをFILEVIEWコマンドによって処理できるようにします。レコードを読み取れた場合にYESを返し、ファイルの末尾に達した場合にNOを返します。

戻り値

BOOLEAN

構文

FILENEXT(fileunit)

パラメータ

fileunit

FILEOPENファンクションを事前にコールすることによって、またはOUTFILEコマンドによって読取り用に開かれたファイルに割り当てられるINTEGER値。

使用上の注意

ファイルの開閉

FILENEXTでファイルからレコードを取得するには、まずFILEOPENファンクションを使用してファイルを読取り用(READモード)として開きます。終了したらFILECLOSE文でファイルを閉じます。

データの処理

FILENEXTでレコードを読み取った後、FILEVIEW文を使用してレコードを処理します。FILEVIEWは、入力データを処理し、それを各フィールドの説明に従ってアナリティック・ワークスペース・オブジェクトまたはローカル変数に割り当てます。FILEVIEWは、同じレコードを連続処理するために複数回コールできます。別のレコードを処理するには、FILENEXTを再びコールします。

自動ループ

すべてのレコードが基本的に同じ方法で処理される場合、FILEREADコマンドを使用すると、ファイルのレコードが自動的にループされるので便利です。

レコードの書込み

選択したレコードの出力ファイルへの書込みについては、FILEPUTコマンドを参照してください。

レコード数

RECNOファンクションを使用すると、読取り専用アクセスで開かれているファイルの現行レコード数を取得できます。

バイナリ・ファイルおよびテキスト・ファイルの読取り

ファイルを開くときにBINARYを指定しなかった場合、FILENEXTは次の改行文字を含めてそこまでデータを読み取ります。ファイルを開くときにBINARYを指定した場合、FILENEXTファンクションを使用する前に、FILESETを使用してLSIZEを適切なレコード長に設定する必要があります。その後、FILENEXTはデータを一度に1レコードずつ読み取ります。

例7-90 FILENEXTを使用するプログラム

レコードが次のようにレイアウトされているファイルの月間販売データを受け取るとします。

Column        Width         Format             Data
 
1             1             Text               Division code
2             10            Text               District name
12            10            Text               Product name
30            4             Packed binary      Sales in dollars
34            4             Packed binary      Sales in units

コードがAである部門に関してのみレコードを処理します。次のプログラムの抜粋は、ファイルを開き、ファイルの各行を読み取って部門Aのデータであるかどうかを判別し、部門Aのデータである場合に販売データを読み取った後、ファイルを閉じます。ファイル名は、プログラム名の後のステートメント行で引数として指定します。

VARIABLE fil.unit INTEGER
. . .
fil.unit = FILEOPEN(arg(1) READ)
LIMIT month TO &arg(2)
 
WHILE FILENEXT(fil.unit)
  DO
    FILEVIEW fil.unit WIDTH 1 rectype
    IF rectype EQ 'A'
      THEN FILEVIEW fil.unit COLUMN 2 WIDTH 10 district -
                             WIDTH 10 product -
                             COLUMN 30 WIDTH 4 BINARY sales -
                             WIDTH 4 BINARY UNITS
  DOEND
FILECLOSE fil.unit