我有這樣的數據, 我想用更新某個表宏數據_NULL_內運行宏
DATA WORK.t1;
LENGTH
POLICY_RK 8
POLICY_VERSION 8
TREATMENT_IND 8 ;
FORMAT
POLICY_RK BEST12.
POLICY_VERSION BEST12.
TREATMENT_IND BEST12. ;
INFORMAT
POLICY_RK BEST12.
POLICY_VERSION BEST12.
TREATMENT_IND BEST12. ;
INFILE DATALINES4
DLM='7F'x
MISSOVER
DSD ;
INPUT
POLICY_RK : BEST32.
POLICY_VERSION : BEST32.
TREATMENT_IND : BEST32. ;
DATALINES4;
105000002
114000005
123000007
132000001
141000007
1508
;;;;
我試圖運行下面的代碼:
%macro storno (pol_rk , pol_ver);
PROC SQL;
UPDATE t1
SET POLICY_VERSION=POLICY_VERSION*3.1113
where POLICY_RK=&pol_rk and policy_Version = &pol_ver;
QUIT;
%mend ;
data _null_;
set t1 ;
IF input(TREATMENT_IND,best12.) eq 1 THEN do;
call symputx("a",policy_rk);
call symputx("b",pol_ver);
end;
%storno(&a, &b);
%put a=&a;
%put b=&b;
run;
但得到一個警告消息:
警告:表觀符號引用一個沒有解決。 警告:明顯的符號引用B未解決。 注意:數字值已在以下位置轉換爲字符值:(行):(列)。 19:21
注意:從數據集WORK.T1中讀取了6個觀察值。 注:DATA語句使用(總處理時間): 實時0.00秒 CPU時間0.00秒
注:沒有行中WORK.T1進行了更新。
我究竟做錯了什麼......?
謝謝!使用呼叫執行代替:) – user2518751
另請注意,您的宏調用PROC SQL將結束數據步驟。如果沒有在所有DATA步驟處理結束時運行的調用EXECUTE,或者在9.2及更高版本的FCMP例程內可用的RUNMACRO(我認爲這是名稱),則不能在數據步驟內調用PROC。 – DomPazz
'FCMP'函數中的'RUN_MACRO',或'DOSUBL'在9.4+的數據步驟中工作。 – Joe