前のページ|次のページ

OPEN関数

SASデータセットを開きます。

カテゴリ: SASファイルI/O

構文

オプション引数

data-set-name

開くSASデータセットまたはSAS SQLビューの名前を指定する文字定数、変数または式です。この文字列の値は次の形式になります。

<libref.>member-name<(data-set-options)>
デフォルト data-set-nameのデフォルト値は_LAST_です。
制限事項 FIRSTOBS=およびOBS=データセットオプションを指定しても無視されます。その他のデータセットオプションはすべて有効です。

mode

データセットへのアクセスの種類を指定する文字定数、変数または式です。

I INPUTモードでデータセットを開きます(デフォルト)。値を読み込むことはできますが、変更することはできません。I' では、エンジンで最も強力なアクセスモードが使用されます。つまり、エンジンでランダムアクセスがサポートされている場合、OPENではデフォルトでランダムアクセスが使用されます。それ以外の場合、ファイルは自動的に'IN'モードで開かれます。ファイルはシーケンシャルアクセスで開かれ、システムレベルの警告が設定されます。
IN INPUTモードでデータセットを開きます。オブザベーションを順次読み込みます(オブザベーションの再アクセスができます)。
IS INPUTモードでデータセットを開きます。オブザベーションを順次読み込みます(オブザベーションの再アクセスはできません)。
デフォルト I

generation-number

生成グループの履歴バージョンの1つを識別するための恒常的に増加する番号を指定します。

ヒント type = Fの場合、generation-number引数は無視されます。

type

次のいずれかの文字定数値になります。

D

第1引数data-set-nameが1レベルまたは2レベルのデータセット名であることを示します。次の例では、D type値をどのように使用できるのかを示します。

 rc=open('lib.mydata', , , 'D');
ヒント 第4引数がない場合、Dがデフォルトになります。

F

第1引数data-set-nameには、ファイル名、ファイルへの物理的パスを指定します。次の例では、F type値をどのように使用できるのかを示します。

rc=open('c:\data\mydata.sas7bdat', , , 'F');   
rc=open('c:\data\mydata', , , 'F'); 
ヒント F値を使用すると、第3引数generation-numberは無視されます。
引数が無効な場合、OPENは0を返します。SYSMSG関数から対応するエラーメッセージのテキストを取得できます。引数が無効でもSASログにメッセージは生成されず、_ERROR_自動変数も設定されません。

詳細

OPEN関数は、SASデータセット、DATAステップまたはSAS SQLビューを開き、一意の数値データセット識別子を返します。ほとんどの場合、この識別子は他のデータセットアクセス関数で使用されます。データセットを開けなかった場合、OPENは0を返します。
OPEN関数をマクロから呼び出す場合、マクロの関数に渡された呼び出しの結果のみが有効になります。OPEN関数をDATAステップから呼び出す場合、同じDATAステップの関数に渡された結果のみが有効になります。
デフォルトでは、SASデータセットはRECORD制御レベルで開きます。詳細については、CNTLLEV= Data Set Option (SASデータセットオプション: リファレンス)を参照してください。開いているSASデータセットが不要になったら閉じる必要があります。DATAステップ内で開いたデータセットは、DATAステップの終了時に自動的に閉じます。
OPENはデフォルトでエンジンで最も強力なアクセスモードになります。つまり、エンジンでランダムアクセスがサポートされている場合、OPENではデフォルトでランダムアクセスが使用されます。それ以外の場合、データセットはシーケンシャルアクセスで開かれ、システムレベルの警告が設定されます。

  • この例では、INPUTモードを使用してライブラリMASTERのデータセットPRICESを開きます。マクロステートメントでは、文字列を引用符で囲みません。
    %let dsid=%sysfunc(open(master.prices, i)); 
    %if (&dsid=0) %then    
         %put %sysfunc(sysmsg()); 
    %else    
         %put PRICES data set has been opened;
  • この例では、データセットオプションで使用するマクロ変数またはDATAステップ変数の値を渡します。データセットSasuser.Housesを開き、WHERE=データセットオプションを使用して永続的なWHERE句を適用します。マクロステートメントでは、文字列を引用符で囲みません。
    %let choice = style="RANCH";
    %let dsid=%sysfunc(open(sasuser.houses(where=(&choice)), i));
  • この例では、エラーの戻り値の確認方法やSYSMSG関数がエラーメッセージを書き込む方法を示します。
    data _null_; 
       d=open('bad', '?');
       if not d then do;
          m=sysmsg();
          put m;
          abort;
       end;
       ... more SAS statements ...
    run;

関連項目:

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