SAS EG中的PRXMATCH在开放代码中不起作用

时间:2020-02-28 14:39:41

标签: sas

我在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

请,您能帮忙吗?

谢谢!

1 个答案:

答案 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;