I'm trying to create the binary format binary3. by concatenating the values 'binary', n, and '.', where n=3 is a value that will be read in from the data step (or possibly a macro variable).
So far the following code doesn't work - it should output a list of binary values for the integers 1 through 8 in the log file. Any ideas what's wrong with my format statement?
data _null_;
n = 3;
rows = 2**n;
/** construct one row at a time **/
format = cats('binary', char(n,1), '.');
do i = 1 to rows;
put @1 i format;
/* put @1 i binary3.;*/
end;
run;
Only the putc/putn function allow dynamic formats.
You could move the format-name to a macro-variable:
%let n = 3;
%let binaryformat = binary&n..;
data _null_;
rows = 2**&n.;
do i = 1 to rows;
put i &binaryformat.;
/* put @1 i binary3.;*/
end;
run;
data _null_;
n = 3;
rows = 2**n;
/** construct one row at a time **/
format = cats('binary', n, '.');
do i = 1 to rows;
b = putn(i, format);
put @1 i b;
end;
run;
B.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.