我在SAS EG开放代码中有这个小代码,它在A中给我0,我不明白为什么!
%let ph=FONDS DE BOURSE;
%LET A=%sysfunc(PRXMATCH("/bourse/i","&ph"));
%put &A;
结果:
%let ph=FONDS DE BOURSE;
%LET A=%sysfunc(PRXMATCH("/bourse/i","&ph"));
SYMBOLGEN: La macro-variable PH est résolue en FONDS DE BOURSE
%put &A;
SYMBOLGEN: La macro-variable A est résolue en 0
0
请,您能帮忙吗?
谢谢!
答案 0 :(得分:3)
使用宏时,无需在函数中的字符串参数上使用引号。由于SAS宏工具旨在处理原始文本,因此引号完全照原样传递给PRXMATCH
。删除引号,它将按预期工作。
%let ph=FONDS DE BOURSE;
%LET A=%sysfunc(PRXMATCH(/bourse/i,&ph));
%put &A;
使用数据步骤时,您需要在引数的第一部分使用引号。未加引号的字符串将作为变量处理。
data test;
ph='FONDS DE BOURSE';
A=PRXMATCH("/bourse/i", ph);
run;