【发布时间】:2021-06-11 16:31:50
【问题描述】:
我正在使用 SAS 宏来执行一个函数,其中一个输入参数来自 SAS 数据表,第二个参数(日期)是硬编码的,像这样-
data _null_;
set RTick.Co_list;
call execute('%trade_participation(01012013,'|| scrip10 ||');');
run ;
宏如下-
%macro trade_participation(date,scrip10);
data Trade_data (drop = time Record_ind segment series trade_no symbol trd_prc trd_q trade_time
buy_order_no buy_client_flg buy_algo_ind sell_order_no sell_client_flg sell_algo_ind);
set Rttrade.Cash_trades_&date;
if symbol = "&scrip10";
if Record_ind = "RM";
if segment = "CASH";
if series = "EQ";
time = trade_time/65536;
time = time/3600;
timeseqno = int((time-9)*60)+1;
if timeseqno > 15;
if (buy_client_flg = 2)&((buy_algo_ind = 0)|(buy_algo_ind = 2)) = 1 then buy_HFT = 1;
if (sell_client_flg = 2)&((sell_algo_ind = 0)|(sell_algo_ind = 2)) = 1 then sell_HFT = 1;
trade_val = trd_prc*trd_q/100;
run;
/* more SAS code to do a bunch of other tasks to do on the subsetted
file Trade_data */
%修补;
我现在面临的问题是 Co_list 文件(scrip10 变量)中的某些输入值具有特殊字符,例如“bbbbbbM&M”或“BAJAJ-AUTO”。一旦这些通过宏,它就会失败 - “未解析明显的符号引用 M。” (对于第一个例子-bbbbbbM&M')
任何人都可以提出解决方法吗?
【问题讨论】: