DATA Step, Macro, Functions and more

how to use %index to get the position of bracket?

Reply
N/A
Posts: 0

how to use %index to get the position of bracket?

Please see the following code, can anyone tell me why put 0 since &x does contain the brackets?

%let x = a(b);
%put %index(&x, ());

I want to use the code like this in macros, and how to check if a string contains brackets?
%* if brackets contained, then ... ;
%if %index(&x, ()) %then ...
Frequent Contributor
Posts: 106

Re: how to use %index to get the position of bracket?

Posted in reply to deleted_user
Please read the section on Macro Quoting in and around e.g. http://support.sas.com/onlinedoc/913/getDoc/de/mcrolref.hlp/a001061290.htm
Valued Guide
Posts: 634

Re: how to use %index to get the position of bracket?

Posted in reply to deleted_user
The index function looks for the second argument exactly not as individual characters. For that you need the INDEXC function. Try:
[pre]%let x = a(b);
%put %sysfunc(indexc(&x,()));
[/pre]
Of course the parentheses are a particularly unfortunate character to have to work with.
N/A
Posts: 0

Re: how to use %index to get the position of bracket?

> The index function looks for the second argument
> exactly not as individual characters. For that you
> need the INDEXC function. Try:
> [pre]%let x = a(b);
> %put %sysfunc(indexc(&x,()));
> [/pre]
> Of course the parentheses are a particularly
> unfortunate character to have to work with.

Oh...yes. %index finds string not characters from given string. I was supposed to know this......a bit dizzy
Thanks a lot.
SAS Employee
Posts: 58

Re: how to use %index to get the position of bracket?

Posted in reply to deleted_user
Try looking for them separately, e.g. find the first one...

12 %let q = %str(%();
13 %put &q;
(
14 %let x = a(b);
15 %put %index(&x, &q);
2
Ask a Question
Discussion stats
  • 4 replies
  • 555 views
  • 0 likes
  • 4 in conversation