Hi experts,
I would like to know why I am not getting the results I expected using the following proc fcmp and proc format:
/**create function**/
proc fcmp outlib = work.functions.myfuncs;
function addZeros(x $) $;
sizeZ = lengthm(x)-length(x)-1;
res = catt(repeat('0', sizeZ,x);
return (res);
endsub;
run;
/**create new format***/
proc format;
value $addFormatTest other=[addZeros()];
run;
data sample;
input x $15. ;
y=x;
len = length(x);
lenm = lengthm(x);
nrZeros = lengthm(x) - length(x);
format y $addFormatTest.;
z=put(x, $addFormatTest.);
datalines;
anothertest
test
tes
;
run;
This format was supposed to add leading zeros but it is writing more zeros than it should.
Any Ideas?
Thanks a lot
Got it to work with:
/**create function**/
proc fcmp outlib = work.functions.myfuncs;
function addZeros(x $) $32;
sizeZ = lengthm(x)-length(x)-1;
res = catt(repeat('0', sizeZ), x);
return (res);
endsub;
run;
options cmplib=work.functions;
/**create new format***/
proc format;
value $addFormatTest (default=32) other=[addZeros()];
run;
data sample;
input x $15. ;
y=x;
len = length(x);
lenm = lengthm(x);
nrZeros = lengthm(x) - length(x);
format y $addFormatTest.;
z=put(x, $addFormatTest.);
datalines;
anothertest
test
tes
;
Added missing parenthesis on REPEAT function call, cmplib option, and (default=) specification in value statement of proc format.
Definition found in https://support.sas.com/documentation/cdl/en/leforinforref/63324/HTML/default/viewer.htm#p09lpr3kmbh...
Zw.d Format Writes standard numeric data with leading 0s. Category: Numeric Alignment: right
I want to add zeros to a character variable and I will use it as a format in SAS Information Map and in SAS Marketing Automation export definitions.
Tks,
Got it to work with:
/**create function**/
proc fcmp outlib = work.functions.myfuncs;
function addZeros(x $) $32;
sizeZ = lengthm(x)-length(x)-1;
res = catt(repeat('0', sizeZ), x);
return (res);
endsub;
run;
options cmplib=work.functions;
/**create new format***/
proc format;
value $addFormatTest (default=32) other=[addZeros()];
run;
data sample;
input x $15. ;
y=x;
len = length(x);
lenm = lengthm(x);
nrZeros = lengthm(x) - length(x);
format y $addFormatTest.;
z=put(x, $addFormatTest.);
datalines;
anothertest
test
tes
;
Added missing parenthesis on REPEAT function call, cmplib option, and (default=) specification in value statement of proc format.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.