DATA Step, Macro, Functions and more

Resolve Macro Variable which is argument of a Macro Function

Accepted Solution Solved
Reply
Contributor
Posts: 25
Accepted Solution

Resolve Macro Variable which is argument of a Macro Function

I have been struggling with an issue.

 

Looking at the code below:

 

 

%put %scan(%str(arg1=A,arg2=B,arg3=C),1);

%let string = arg1=A,arg2=B,arg3=C;

%put %scan(%str(&string),1);

 

 

The first %put statement writes arg1=A in the log as expected.

 

The second %put statement gives a warning.

 

WARNING: Argument 2 to macro function %SCAN is out of range.

 

My question is:

 

How do I force the %put statement to first resolve the macro variable &string to arg1=A,arg2=B,arg3=C and then execute the %put statement?


Accepted Solutions
Solution
‎06-07-2017 01:51 AM
PROC Star
Posts: 252

Re: Resolve Macro Variable which is argument of a Macro Function

[ Edited ]

this should work as 

The %STR and %NRSTR functions mask a character string during compilation of a macro or macro language statement. They mask the following special characters and mnemonic operators:

 

to make it work  during execution use %bquote

 

 

%put %scan(%str(arg1=A,arg2=B,arg3=C),1);
/*complilation*/
%let string = %str(arg1=A,arg2=B,arg3=C);
%put %scan(&string,1);
/*bquote During execution*/
%let string9 = arg1=A,arg2=B,arg3=C;
%put %scan(%bquote(&string9),1);

 

View solution in original post


All Replies
Solution
‎06-07-2017 01:51 AM
PROC Star
Posts: 252

Re: Resolve Macro Variable which is argument of a Macro Function

[ Edited ]

this should work as 

The %STR and %NRSTR functions mask a character string during compilation of a macro or macro language statement. They mask the following special characters and mnemonic operators:

 

to make it work  during execution use %bquote

 

 

%put %scan(%str(arg1=A,arg2=B,arg3=C),1);
/*complilation*/
%let string = %str(arg1=A,arg2=B,arg3=C);
%put %scan(&string,1);
/*bquote During execution*/
%let string9 = arg1=A,arg2=B,arg3=C;
%put %scan(%bquote(&string9),1);

 

☑ This topic is SOLVED.

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

Discussion stats
  • 1 reply
  • 129 views
  • 2 likes
  • 2 in conversation