DATA Step, Macro, Functions and more

create a macro variable

Reply
Occasional Learner
Posts: 1

create a macro variable

Data test;

     put  

      abc $3.

      qrs $3.

      xyz $5.;

 

    do 1 to 20;

      abc="djsdfsdk";

      qrs="sdui";

      xyz="YHTyuh";

   end;

output;

run;

 

i need to create  macro variable for abc, qrs, xyz

Can anybody please help

 

Regular Contributor
Posts: 231

Re: create a macro variable

What do you want to do with the macro variables? What should they contain?

The position of the output statement seems to be wrong.
PROC Star
Posts: 1,410

Re: create a macro variable

For what purpose is this code? It makes very little sense.

 

You can use the CALL SYMPUTX Routine to create macro variables in a data step

 

 

Super User
Posts: 10,623

Re: create a macro variable

Before you even think about dealing with the macro preprocessor, you need to get a grasp of basic SAS data step principles, which you very obviously have not yet managed to do:

Data test;
     put  
      abc $3.
      qrs $3.
      xyz $5.; /* This put statement makes no sense, as the variables have no values yet */
 
    do 1 to 20;
      abc="djsdfsdk";
      qrs="sdui";
      xyz="YHTyuh";
   end; /* this do loop also makes no sense, as it just sets the same values 20 times in succession. Just a waste of CPU cycles */
output; /* this statement is not necessary, as the data step will perform an implicit output of it's own at the end of an iteration */
run;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
Super User
Posts: 24,028

Re: create a macro variable

You create macro variables in a data step using CALL SYMPUTX(). 

 

Your question is too vague to answer, so given how you've stated it, this would be 'correct':

 

%let macro1=abc;
%let macro2=qrs;
%let macro3=xyz;

You should also look into how PROC SQL can create macro variables, it's quite efficient at doing so, check the documentation for the relevant section with full examples:

proc sql noprint;
select name into :name1-
from sashelp.class;
quit;

%put &name1.;
%put &name19.;

 

 

Ask a Question
Discussion stats
  • 4 replies
  • 163 views
  • 2 likes
  • 5 in conversation