DATA Step, Macro, Functions and more

Question on converting a list key-value pairs to macro variable-value pairs

Reply
Occasional Contributor
Posts: 19

Question on converting a list key-value pairs to macro variable-value pairs

Hi,

I have a list of macro variables m1,m2,m3... etc each of it having values as given below:

value of &m1 is: name=Pramod

value of &m2 is: location=Bangalore

value of &m3 is: date=29nov2011

.

.

.

I want to convert each of these key value pairs into macro variable-value pairs. That is, I want macro variables and thier values as below:

value of &name is: Pramod

value of &location is: Bangalore

value of &date is : 29nov2011

etc..

Please let me know if you need more clarity on understanding the problem statement..

Thanks in advance!

Pramod

Super Contributor
Posts: 1,636

Re: Question on converting a list key-value pairs to macro variable-value pairs

Is this what you want?

%let m1 =name=Pramod;

%let m2 =location=Bangalore;

%let m3 = date=29nov2011;

%macro test;

data look;

length mn $ 8 mv $ 12;

%do i=1 %to 3;

mn="%scan(&&m&i,1,'=')";

mv="%scan(&&m&i,2,'=')";

output;

%end;

run;

%mend;

%test

data _null_;

   set look;

   call symputx(mn,mv);

run;

%put _user_;

21   %put _user_;

GLOBAL LOCATION Bangalore

GLOBAL DATE 29nov2011

GLOBAL M1 name=Pramod

GLOBAL M2 location=Bangalore

GLOBAL M3 date=29nov2011

GLOBAL NAME Pramod

Linlin

Respected Advisor
Posts: 3,777

Re: Question on converting a list key-value pairs to macro variable-value pairs

%let m1=name=Pramod;

%let m2=location=Bangalore;

%let m3=date=29nov2011;

*simply;

%let &m1;

%put _user_;

*or automagically;

data _null_;

   set sashelp.vmacro(where=(SCOPE='GLOBAL' and name eq: 'M'));

   put _all_;

   call execute(cat('%let ',strip(value),';'));

   run;

%put _user_;

Ask a Question
Discussion stats
  • 2 replies
  • 432 views
  • 0 likes
  • 3 in conversation