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 ;
CFC_SAS_Communities_400x225.jpg
It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.
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.