Help using Base SAS procedures

Problem of parameter with Parentheses

Accepted Solution Solved
Reply
Regular Contributor
Posts: 222
Accepted Solution

Problem of parameter with Parentheses

Hi guys,

If I run the following SAS code ,because there is a "(" in the parameter, I can't get the result I need . please help.

Thanks!

%macro test(a);
%put value of a is: &a;
%mend test;

%test(a=njhl5u#$%^&*(IJK44t95y7u45n64);/*this one doesn't work*/


Accepted Solutions
Solution
‎08-28-2012 03:54 PM
PROC Star
Posts: 7,363

Re: Problem of parameter with Parentheses

Mike,

I sent you a solution in your previous thread, but I'll repeat it here:

%macro test(a);

%let a2=%nrbquote(&a);

%put a: &a2;

%mend test;

%test(a=aa)

%test(a=njhl5IJK44t95y7u45n64)

%test(a=%str(njhl5u#$%^&*%(IJK44t95y7u45n64))

Art

View solution in original post


All Replies
Solution
‎08-28-2012 03:54 PM
PROC Star
Posts: 7,363

Re: Problem of parameter with Parentheses

Mike,

I sent you a solution in your previous thread, but I'll repeat it here:

%macro test(a);

%let a2=%nrbquote(&a);

%put a: &a2;

%mend test;

%test(a=aa)

%test(a=njhl5IJK44t95y7u45n64)

%test(a=%str(njhl5u#$%^&*%(IJK44t95y7u45n64))

Art

Super User
Posts: 5,083

Re: Problem of parameter with Parentheses

Mike,

You properly identified the problem as the unbalanced parenthesis.  Art properly identified one possible solution, although his example illlustrates how quoting functions require you to refer to ( as %( within the quoting function.

If it is an acceptable solution, get rid of the macro definition.

%let a=njhl5u#$%^&*(IJK44t95y7u45n64;

%put &a;

A partial solution might be possible as well:

%let a=njhl5u#$%^&*(IJK44t95y7u45n64;

%test (a=%superq(a))

Does this help at all?

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 153 views
  • 3 likes
  • 3 in conversation