前のページ|次のページ

FPOINT関数

次に読み込むレコードに読み込みポインタを配置します。

カテゴリ: 外部ファイル

構文

FPOINT(file-id, note-id)

必須引数

file-id

通常、FOPEN関数によってファイルが開かれたときに割り当てられた識別子を指定する数値変数です。

note-id

FNOTE関数で割り当てた識別子を指定します。

詳細

FPOINTは、操作が成功した場合は0、失敗した場合は≠0を返します。FPOINTは、次に読み込むレコードのみを決定します。次に書き込むレコードに影響はありません。更新のためにファイルを開くと、FWRITEは最後に読み込まれたレコードに書き込みます。
注: 新しいレコードが現在のレコードよりも長い場合、現在のレコードのかわりに新しいレコードを書き込むことはできません。

この例では、ファイル参照名MYFILEを外部ファイルに割り当ててそのファイルを開こうとします。ファイルが正常に開かれた場合、レコードを読み込み、NOTE3を使用して3番目に読み込まれたレコードの位置を保存します。その後、NOTE3にポインタを戻してファイルを更新し、ファイルを閉じます。
%let filrf=myfile;
%let rc=%sysfunc(filename(filrf, physical-filename));
%let fid=%sysfunc(fopen(&filrf, u));
%if &fid > 0 %then
   %do;
         /* Read first record. */
      %let rc=%sysfunc(fread(&fid));
         /* Read second record. */
      %let rc=%sysfunc(fread(&fid));
         /* Read third record. */
      %let rc=%sysfunc(fread(&fid));
         /* Note position of third record. */
      %let note3=%sysfunc(fnote(&fid));
         /* Read fourth record. */
      %let rc=%sysfunc(fread(&fid));
         /* Read fifth record. */
      %let rc=%sysfunc(fread(&fid));
         /* Point to third record. */
      %let rc=%sysfunc(fpoint(&fid, &note3));
         /* Read third record. */
      %let rc=%sysfunc(fread(&fid));
         /* Copy new text to FDB. */
      %let rc=%sysfunc(fput(&fid, New text));
         /* Update third record  */
         /* with data in FDB. */
      %let rc=%sysfunc(fwrite(&fid));
         /* Close file. */
      %let rc=%sysfunc(fclose(&fid));
   %end;
%let rc=%sysfunc(filename(filrf));

関連項目:

前のページ|次のページ|ページの先頭へ