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,492

Re: Problem of parameter with Parentheses

Posted in reply to Mike_Davis

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,492

Re: Problem of parameter with Parentheses

Posted in reply to Mike_Davis

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,518

Re: Problem of parameter with Parentheses

Posted in reply to Mike_Davis

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 and locked.

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

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