I want to create a database such as :
data seuils_60;
input seuil1;
datalines;
1080
;
Except that I would like 1080 not to be an actual number, but a value stocked in a macrovariable. But when I try
data seuils_60;
input seuil1;
datalines;
&seuil_60_14
;
I get an error, although I can %put
my macrovariable (it exists).
What would be the best way around ?
data seuils_60;
seuill=&seuil_60_14 ;
run;
data seuils_60;
seuill=&seuil_60_14 ;
run;
SAS has a prohibition against macrovariables in datalines/cards statements.
Use the
varname1=&macvarnam1.;
varname2=&macvarnam2.;
...
varnameN=&macvarnamN.;
output;
method to get around that.
If need to poopulate more than one data row, and more than one variable per data row, you can assign and reference macro arrays like:
%do i = 1 %to &n.;
%do j = 1 %to &m.
varnam&j.=&&mvar&i._&j..;
%end;
%end;
where n and m are the rows and columns of the data you want to load respectively and your macro variables are named from mvar1_1 to mvar&n._&m.
Sorry? Where is the database in the question? From what I can see is you want to assign a bit of text - macro is only text - to a variable. So the question is why, as:
data want; seuil1=1060; run;
Seems to be the code you want. Without further information as to the why its hard to say, I mean what is
&seuil_60_14
Why is it created, why does it contain data?
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.