Hey Guys, I am trying to encrypt the ssn and fname variables using the below code; The ssn seems to be working, but not the fname. Any suggestions or tweaks for making this work?
%let ssn_enc=Y*Z$%^WX&(;
%let ssn_pass=1029384756;
%let name_enc=!@#$%^&*()*^%$#@!%^&()^%$#;
%let name_pass=ABCDEFGHIJKLMNOPQRSTUVWXYZ;
data new;
input fname $8. ssn $9;
cards;
John 123456789
daniel 851295790
steve 473967594
becky 203954769
;
run;
data new1;
set new;
length encrypt_ssn $9. encrypt_fname $10.; /* Length of encrypted variables */
/* Encrypt SSN */
encrypt_ssn = '';
do i=1 to 9;
encrypt_ssn = encrypt_ssn || translate(strip(substr(ssn,i,1)), symget('ssn_pass'), symget('ssn_enc'));
end;
/* Encrypt fname */
encrypt_fname = '';
do i=1 to 8;
encrypt_fname = encrypt_fname || translate(strip(substr(fname,i,1)), symget('name_pass'), symget('name_enc'));
end;
run;
If you run PROC CONTENTS and PROC PRINT on work.new, you'll see that your first step has not created the dataset you are hoping for. Perhaps try:
data new;
input fname : $8. ssn : $9.;
cards;
John 123456789
daniel 851295790
steve 473967594
becky 203954769
;
run;
Then you can move on to debugging the second step. You don't need to loop over each character. You can just call TRANSLATE once, like:
data want ;
set sashelp.class ;
name2=translate(upcase(name),"!@#$%^&*()*^%$#@!%^&()^%$#","ABCDEFGHIJKLMNOPQRSTUVWXYZ") ;
put name= name2= ;
run ;
If you run PROC CONTENTS and PROC PRINT on work.new, you'll see that your first step has not created the dataset you are hoping for. Perhaps try:
data new;
input fname : $8. ssn : $9.;
cards;
John 123456789
daniel 851295790
steve 473967594
becky 203954769
;
run;
Then you can move on to debugging the second step. You don't need to loop over each character. You can just call TRANSLATE once, like:
data want ;
set sashelp.class ;
name2=translate(upcase(name),"!@#$%^&*()*^%$#@!%^&()^%$#","ABCDEFGHIJKLMNOPQRSTUVWXYZ") ;
put name= name2= ;
run ;
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.
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.
Ready to level-up your skills? Choose your own adventure.