前のページ|次のページ

REPLACEステートメント

同じ場所にあるオブザベーションを置換します。

該当要素: DATAステップ
カテゴリ: アクション
種類: 実行
制限事項: 必ずMODIFYステートメントと組み合わせて使用します。

構文

引数なし

引数を指定しない場合、REPLACEステートメントは、DATAステートメントに指定したすべてのデータセットに対して、オブザベーションの読み込み元の物理的な場所に現在のオブザベーションを書き込みます。

引数

data-set-name

オブザベーションを書き込むデータセットを指定します。

要件 このデータセット名は、DATAステートメントおよび1つ以上のMODIFYステートメントにも指定する必要があります。
ヒント データセット名を使用するかわりに、オペレーティングシステムでサポートされている構文を使用してファイルの物理パス名を指定することができます。物理パス名は一重引用符または二重引用符で囲む必要があります。

詳細

明示的なREPLACEステートメントの使用は、オブザベーションのデフォルトの置き換えより優先されます。DATAステップでREPLACEステートメントを使用する場合、DATAステップのすべての出力をプログラムする必要があります。

比較

  • OUTPUT、REPLACE、REMOVEの各ステートメントの使用は、DATAステップの最後に実行されるデフォルトの書き込みアクションより優先されます。(OUTPUTがデフォルトのアクションです。ただし、MODIFYステートメントを使用するとREPLACEがデフォルトのアクションになります。)DATAステップでこれらのステートメントのいずれかを使用する場合、このステップの新しいオブザベーションの出力を明示的にプログラムする必要があります。
  • OUTPUT、REPLACE、REMOVEの各ステートメントは互いに独立して動作します。順序が論理的に正しければ、同じオブザベーションに複数のステートメントを適用できます。
  • 特定のオブザベーションに対してOUTPUTステートメントとREPLACEまたはREMOVEステートメントの両方を実行する場合、オブザベーションのポインタの位置を正しく保つため、OUTPUTステートメントを最後に実行します。
  • REPLACEはオブザベーションを元の物理的な場所に書き込みます。OUTPUTは新しいオブザベーションをデータセットの最後に書き込みます。
  • REPLACEステートメントは、MODIFYステートメントを使用したDATAステップにのみ使用できます。OUTPUTステートメントは、MODIFYステートメントの有無にかかわらず指定できます。

例: オブザベーションの置き換え

この例では、データセットMASTERにある電話番号をデータセットTRANSにある値で置き換えます。また、データセットMASTERの最後に新しいオブザベーションが1つ追加されます。SYSRC自動呼び出しマクロは、MASTERからデータを取得するたびに _IORC_ の値を確認します。(SYSRCは、SAS自動呼び出しマクロライブラリのメンバです。)コードの後に、生成されるSASデータセットを示します。
data master;
   input FirstName $ id $ PhoneNumber;
   datalines;
Kevin ABCjkh 904
Sandi defsns 905
Terry ghitDP 951
Jason jklJWM 962
;
data trans;
   input FirstName $ id $ PhoneNumber;
   datalines;
. ABCjkh 2904
. defsns 2905
Madeline mnombt 2983
;
data master;
   modify master trans;
   by id;
      /* obs found in master  */
      /* change info, replace */
   if _iorc_ = %sysrc(_sok) then replace;
      /* obs not in master    */
   else if _iorc_ = %sysrc(_dsenmr) then 
      do; 
         /* reset _error_        */
         _error_=0;       
         /* reset _iorc_         */
         _iorc_=0;  
         /* output obs to master */
      output;  
      end;
run;
proc print data=master;
   title 'MASTER with New Phone Numbers';
run;
オブザベーションが置き換えられたデータセット
オブザベーションが置き換えられたデータセット

関連項目:

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