前のページ|次のページ

FILENAME関数

ファイル参照名を外部ファイル、ディレクトリまたは出力デバイスに割り当てるか、または割り当てを取り消します。

カテゴリ: 外部ファイル
制限事項: FILENAME関数を指定中のSASセッションがロックダウン状態で、その関数で指定されているパス名がロックダウンパスリストに追加されていない場合、その関数は失敗し、そのロックダウンデータに関連するファイルアクセスエラーは、SYSMSG関数を指定しない限り、SASログに生成されません。

構文

FILENAME(fileref, filename <,device-type> <, 'host-options'>
<, directory-reference>); [Windows、Unix]
FILENAME(fileref, filename <device-type> <host-options>; [z/OS]

必須引数

fileref

外部ファイルに割り当てるファイル参照名を指定します。DATAステップの場合、filerefには文字式、ファイル参照名を指定する引用符で囲まれた文字列、または値にファイル参照名を含むDATAステップ変数を指定できます。マクロの場合(たとえば%SYSFUNC関数)、filerefは外部ファイルに割り当てるファイル参照名を値に含むマクロ変数の名前(アンパサンドは含まない)になります。

動作環境の情報: fileref引数には、WindowsまたはUNIXの環境変数も指定できます。指定するファイル参照名または環境変数は、引用符で囲む必要があります。
要件 filerefが、DATAステップ変数である場合は、8文字以下で指定してください。
ヒント ファイル参照名が、値が空白のDATAステップ文字変数で最大長が8文字の場合、またはfilerefで指定したマクロ変数の値がNULLの場合、ファイル参照名が生成され、それぞれ文字変数またはマクロ変数に割り当てられます。

オプション引数

filename

外部ファイルを指定する文字定数、変数または式です。

UNIX固有: ファイル名はデバイスタイプにより異なります。各デバイスに適切な詳細情報については、Assigning Filerefs to External Files or Devices with the FILENAME Statement (UNIX版SAS)を参照してください。UNIXファイル名は大小文字が区別されるので注意してください。
ヒント filename引数に対して空白値を渡すと、以前割り当てたファイル参照名の割り当てを取り消せます。

device-type

デバイスの種類、またはファイル参照名が物理ファイルではない入出力デバイスや場所を指定する場合は使用するアクセス方法を指定する文字定数、変数または式です。

Windows固有: デバイスタイプには、FILENAME Statement: Windows (Windows版SAS)にリストされているデバイスのいずれかを指定できます。DISKは、デフォルトのデバイスタイプです。
UNIX固有: デバイスタイプには、Assigning Filerefs to External Files or Devices with the FILENAME Statement (UNIX版SAS)にリストされているデバイスのいずれかを指定できます。DISKは、デフォルトのデバイスタイプです。
z/OS固有: デバイスタイプには、FILENAME Statement: z/OS (z/OS版SAS)にリストされているデバイスのいずれかを指定できます。

DISK

デバイスがディスクドライブであることを指定します。

別名 BASE
ヒント ファイル参照名をディスク上のファイルに割り当てるとき、DISKを指定する必要はありません。

DUMMY

ファイルへの出力を破棄することを指定します。

ヒント DUMMYを指定すると、テストに便利な場合があります。

GTERM

出力デバイスの種類が、グラフィックデータを受け取るグラフィックデバイスであることを示します。

PIPE

名前の付いていないパイプを指定します。

一部の動作環境では、パイプはサポートされていません。

PLOTTER

バッファされていないグラフィック出力デバイスを指定します。

PRINTER

プリンタまたはプリンタスプールファイルを指定します。

TAPE

テープドライブを指定します。

TEMP

ファイル名が割り当てられている間だけ存在する一時ファイルを作成します。一時ファイルにアクセスするには論理名を使用する必要があり、この一時ファイルは論理名が存在する間のみ使用できます。

制限事項 物理パス名は指定しないでください。指定すると、エラーが返されます。
ヒント TEMPデバイスで操作されるファイルは、同じ属性を持ち、DISKファイルと同様な動作ができます。

TERMINAL

ユーザーのパーソナルコンピュータを指定します。

UPRINTER

Universal Printingプリンタ定義名を指定します。

動作環境の情報: FILENAME関数では、動作環境に固有のデバイスもサポートされます。詳細については、動作環境に関するSASのドキュメントを参照してください。

'host-options'

ファイル属性や処理属性など、ホストに固有の詳細を指定します。

Windows固有: FILENAMEステートメント内で利用可能なオプションのどれでも使えます。FILENAME Statement: Windows (Windows版SAS)を参照してください。
UNIX固有: FILENAMEステートメントで利用可能なオプションのいずれかを使用できます。Assigning Filerefs to External Files or Devices with the FILENAME Statement (UNIX版SAS)を参照してください。
z/OS固有: FILENAMEステートメントで利用可能なオプションのいずれかを使用できます。FILENAME Statement: z/OS (z/OS版SAS)を参照してください。

directory-reference

外部ファイルが保存されているディレクトリまたは分割データセットに割り当てられたファイル参照名を指定します。

詳細

FILENAMEは操作が成功した場合は0、失敗した場合は≠0を返します。ファイルまたはデバイスに関連付けられている名前は、fileref(ファイル参照名)と呼ばれます。外部ファイルおよびディレクトリを操作する他のシステム関数では、ファイルを物理ファイル名ではなくファイル参照名で識別する必要があります。ファイル参照名と物理ファイルの関連付けは、現在のSASセッションの期間、またはFILENAMEを使用して関連付けを変更または廃止するまで有効です。
ファイル参照名の割り当ては、FILENAME関数で引数を1つ指定するか、filename引数に対して空白値を渡すことで、取り消すことができます。
動作環境の情報: この説明中のディレクトリという用語は、動作環境で管理されるファイルをグループ化した集合を指します。これらのグルーピングは、異なる動作環境ではディレクトリ、サブディレクトリ、フォルダ、MACLIB、分割データセットなど、さまざまな名前で呼ばれます。詳細については、お使いの動作環境向けのSASドキュメントを参照してください。
一部の動作環境では、システムコマンドを使用してファイル参照名を割り当てることもできます。動作環境によっては、SAS以外で割り当てられたファイル参照名をFILENAMEで変更したり、割り当てを取り消したりできないことがあります。

例1: 外部ファイルにファイル参照名を割り当てる

この例では、ファイル参照名MYFILEを外部ファイルに割り当てます。次に、ファイル参照名の割り当てを取り消します。マクロステートメントでは、文字列を引用符で囲む必要はありません。
%let filrf=myfile;
%let rc=%sysfunc(filename(filrf, physical-filename));
%if &rc ne 0 %then
   %put %sysfunc(sysmsg());
%let rc=%sysfunc(filename(filrf));

例2: システム生成のファイル参照名を割り当てる

この例では、システムで生成されたファイル参照名を外部ファイルに割り当てます。ファイル参照名は、変数FNAMEに保存されます。マクロステートメントでは、文字列を引用符で囲む必要はありません。
%let rc=%sysfunc(filename(fname, physical-filename));
%if &rc %then
   %put %sysfunc(sysmsg());
%else
   %do;
      ... more macro statements ...
   %end;

例3: パイプファイルにファイル参照名を割り当てる

この例では、ディレクトリ/u/myid内のファイルが表示されるUNIXコマンドLSの出力を使用して、ファイル参照名MYPIPEをパイプファイルに割り当てます。マクロステートメントでは、文字列を引用符で囲む必要はありません。
%let filrf=mypipe;
%let rc=%sysfunc(filename(filrf, %str(ls /u/myid), pipe));

関連項目:

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