PRXMATCH в SAS EG не работает в открытом коде - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть этот маленький код в открытом коде SAS EG, он дает мне 0 в A, и я не понимаю, почему !!!

%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 Ответ

3 голосов
/ 28 февраля 2020

При использовании макросов вам не нужно использовать кавычки для строковых аргументов в функциях. Кавычки передаются в точности как PRXMATCH, поскольку средство макросов SAS предназначено для обработки необработанного текста. Удалите кавычки, и они будут работать, как и ожидалось.

%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; 
...