FILEGETファンクションは、読取り用に開かれているバイナリ以外のファイルのテキストを返します。FILEGETがそのファイルの末尾に達すると、NA
を返します。FILEGETで読み取られるすべてのテキストは、データベース・キャラクタ・セットに変換されます。FILEGETは、データベース・キャラクタ・セットで表せないデータを読み取ることはできません。
パラメータ
FILEOPENファンクションを事前にコールすることによって読取り用に開かれたファイルに割り当てられるINTEGER値。
FILEGETがファイルから返すバイト数を指定するINTEGER式。入力ファイルで行端文字に達すると、FILEGETは作成中の結果でそのまま新しい行を開始します。LENGTHを省略した場合、FILEGETは、含まれるバイト数にかかわらず1行または1レコードを読み取ります。
使用上の注意
読み取られるバイト数と返されるバイト数の違い
LENGTHで指定する値は、FILEGETファンクションが読み取るバイト数ではなく、返すバイト数を参照します。これらの値は、異なる値になる場合があります。たとえば、読取り対象のファイルにタブ文字が含まれている場合、FILEGETが返すバイト数にはタブ拡張のバイト数も含まれるため(存在する場合)、FILEGETが返すバイト数は、FILEGETが読み取ったバイト数よりも大きくなります。
例
例7-89 ファイルを読み取るプログラム
引数としてファイル名を取るreadfile
という名前のプログラムがあるとします。このプログラムは、ファイルを開いてファイルの各行を読み取り、それをwholetext
という名前の複数行のテキスト変数に追加し、ファイルを閉じます。readfile
はローカル変数を使用して、ファイル・ユニット番号、および読み取られるとおりにファイルの各行を格納します。
DEFINE wholetext VARIABLE TEXT LD Multiline text variable DEFINE readfile PROGRAM LD Program to store data from a file in a multiline text variable PROGRAM VARIABLE fil.unit INTEGER "Local Var To Store File Unit VARIABLE fil.text TEXT "Local Var To Store Single Lines FIL.UNIT = FILEOPEN(ARG(1) READ) FIL.TEXT = FILEGET(fil.unit) "Read The First Line WHILE fil.text NE NA "Test For End-of-file DO wholetext = JOINLINES(wholetext, fil.text) fil.text = FILEGET(fil.unit) "Read The Next Line DOEND FILECLOSE fil.unit END