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?
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.