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 ;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.