|
|
MODIFYステートメントを使用したSASデータセットの更新 [OS]ALL
[リリース] 6.07, 6.08, 6.09, 6.10, 6.12, 8.2
[キーワード] base, datastep, modify, option, key=, _iorc_, output
[質問]DATAステップのMODIFYステートメントを使用して、SASデータセットを更新しようとしましたが、KEY=データセットオプション(インデックス変数)に指定した変数の値で、マスターのデータセットに無いものがトランザクションのデータセットにあると、以下のようなエラーが発生します。どうすればよいでしょうか。 ERROR: No matching observation was found in master data set. [回答]
MODIFYステートメントでインデックスを使用して更新する場合は、基本的にトランザクションのキー変数の値はマスターに存在しているものでなければなりません。
data master(index=(a));
input a b $;
cards;
1 m
2 m
3 m
4 m
;
run;
data transact;
input a c $;
cards;
1 t
2 t
3 t
5 t
;
run;
data master;
set transact;
modify master key=a;
select (_iorc_);
when (%sysrc(_sok)) do; /* キーがマッチする場合は更新 */
b=c; replace;
end;
when (%sysrc(_dsenom)) do; /* キーがアンマッチの場合は追加 */
_error_= 0; _iorc_= 0; b=c; output;
end;
otherwise do; /* その他の場合はメッセージを出力 */
put 'ERROR: IORC is' _iorc_; stop;
end;
end;
run;
proc print data=master; run;
[参考]
|
|||||