/ / Поле не читається як символьний рядок - sas

Поле не читається як символьний рядок - sas

Вирішено. Дивіться виноску.

            /*check regex*/
go = 1;
i = 1;
do while (go = 1);
set braw.regex point = i;
if (upcase(fname) = upcase("&var.")) then do;

put format1 " one"; /*format1 is a field of braw.regex, properties says character length 30*/
if format1 = "/d{8}/" then put "hello world one"; else put "good bye world one";
%check1(&data, format1, &var)


end;
else i = i+1;

end;

/*check1 passes regex, string, true false to check_format*/
%macro check_format(regex, string, truefalse);

pattern = prxparse(&regex.);
truefalse = prxmatch(pattern, &string);
put &regex " " &string " " &truefalse "post";
%mend;

Тож шкода відсутності відступу - потік стаціонарного транспорту, здається, баггі чи щось подібне.

Ці виходи

 /d{8}/ one
good bye world one

мабуть, формат не є рядком. Отже, він виходить з ладу prxparse, оскільки він шукає введення рядка. Будь-яке уявлення про те, що я роблю?

Я думав, що можу використовувати макро змінну, щоб поставити цитати навколо неї, можливо, використовуючи:

call symput("mymacrovar", format1);
%let mymacrovar = "&mymacrovar";

але цей симпат нічого не робить.

Вирішено: Його читали як рядок. У файлі CSV, з якого читався набір даних регулярних виразів, між комами були додаткові пробіли, що робить рядок "/ d {8} /", який prxparse не подобається.

Відповіді:

0 для відповіді № 1

Це був читається як рядок. У файлі CSV, з якого читався набір даних регулярних виразів, між комами були додаткові пробіли, роблячи рядок "_ / d {8} /" (підкреслення, що позначає пробіл), який prxparse не подобається.