Мне нужно найти управляющие символы (например, LF) внутри макропеременной.
Приведенный ниже шаг данных подтверждает наличие управляющих символов.Мой вопрос - как мне проверить это в макрофункции?
data _null_;
length start mactest $10;
start='blah' !! '0A'x !! 'blah';
call symputx('mactest',start);
mactest=symget('mactest');
finish1=find(start,'0A'x);
finish2=find(start,byte(10));
finish3=find(start,'
');
put finish1= finish2= finish3=;
run;
%put whereisit? %sysfunc(find(&mactest,'0A'x));
%put no, really? %sysfunc(find(&mactest,%sysfunc(byte(10))));
%put do I really need to do this? %sysfunc(find(&mactest,%str(
)));
^^ Мне удалось получить результат буквальнодобавление возврата каретки с моей клавиатуры, но очень странно, что это отличалось в зависимости от того, был ли он введен в шаг данных или макрос (я использую macbook, studio, 9.4, firefox).
РЕДАКТИРОВАТЬ - по отзывам от @FriedEgg и @Stu можно искать, используя qsysfunc()
, однако это прерывается, когда макро-переменная содержит пробел - например:
data _null_;
length lf $10;
lf='bl ah' !! '0A'x !! 'blah';
call symputx('lf',lf);
run;
/* returns 3 but should return 6 */
%put lf=%sysfunc(find(&lf,%qsysfunc(inputc(0A,$hex.))));