Sas 从libname调用宏变量

Sas 从libname调用宏变量,sas,sas-macro,Sas,Sas Macro,如果希望在libname中使用procsql的from子句中的宏变量,如何调用它? 让我告诉你我的意思: options nofmterr; libname FRST "/ecm/retail/mortgage/nbk6kra/LGD/data/frst_201312bkts"; libname HELN "/ecm/retail/mortgage/nbk6kra/LGD/data/heln_201312bkts"; libname HELC "/ecm/retail/mortgage/nbk6

如果希望在libname中使用procsql的from子句中的宏变量,如何调用它? 让我告诉你我的意思:

options nofmterr;
libname FRST "/ecm/retail/mortgage/nbk6kra/LGD/data/frst_201312bkts";
libname HELN "/ecm/retail/mortgage/nbk6kra/LGD/data/heln_201312bkts";
libname HELC "/ecm/retail/mortgage/nbk6kra/LGD/data/helc_201312bkts";

%let pathLGD = /new/mortgage/2014Q4/LGD;
%let prod = FRST; 

/**************** Segment calculation **************** Date filter to be consistent with model documentation for segmented tables****************/

%macro Performance(prod);

proc sql;
create table lgd_seg_&prod as 
select distinct
SegDT_LGD_2013,
min(ScoreDT_LGD_2013) as min_range,
max(ScoreDT_LGD_2013) as max_range,
count(*) as count,
mean(lgd_ncl_adjusted) as LGD_actual, 
mean(ScorePIT_LGD_2013) as LGD_pred_pit_1, 
mean(ScoreDT_LGD_2013) as LGD_pred_dt_1
from "&prod."scored;
where coh_asof_yyyymm > 200612
group by 1;
quit;

PROC EXPORT DATA=lgd_seg_&prod._fs
                OUTFILE= "&pathLGD./lgd_seg.xlsx" 
                DBMS=XLSX REPLACE;
         SHEET="&prod._lgd_seg_fs"; 
    RUN;

%mend;

%Performance(prod=FRST);        
%Performance(prod=HELN);        
%Performance(prod=HELC);
因此,在“from”子句中,宏应该分别读取FRST.scored、HELN.scored和HELC.scored。目前它找不到该文件,如果我删除引号,它就会变成“work.FRSTscored”。
我希望我已经说清楚了。欢迎任何输入和注释。

如果您想在宏变量的解析值后面加上一个立即附加字符,则应使用句号(
)转义宏变量。例如:

%let start = one;
%put &start.two;
%put &start..two;
%put &startend;
一对二
一。二
警告:未解析明显的符号引用

因此,您的代码应该读取&prod..scored


如果需要,还可以使用双符号(
&&
)延迟宏变量的解析:

三个

或:

开端


删除应用于宏变量prod外部的引号,并在宏变量后面使用两个点(一个点表示宏变量名称的结束,另一个点指定libname引用后面的表名)

from &prod..scored

谢谢你的帮助!
%let three = inception;
%put &&&&&&&start&end;
from &prod..scored