*There is a earlier topic describing how to replace multiple targets using tranwrd in a loop function. Unfortunately it is somehow not working for all types of Words that I want to replace.
In the below code I want to remove. "koncern-LK.ramme" but the function fails to do so. Does anybody know what I am doing wrong?. Thx
data x;
set y;
newName = OldName;
do word="kon.-LK", "koncern-LK.ramme";
newName = tranwrd(' '||newName, ' '||strip(word)||' ', ' ');
end;
newName = compbl(newName );
drop word;
run;
Your problem is probably the length of the WORD variable - the DO statement initializes the variable to the length of the first value in the iteration, as you can see from this log:
1507 data _null_; 1508 do word="kon.-LK", "koncern-LK.ramme"; 1509 put word; 1510 end; 1511 run; kon.-LK koncern
If you add a LENGTH statement it should work:
1512 data _null_; 1513 length word $20; 1514 do word="kon.-LK", "koncern-LK.ramme"; 1515 put word; 1516 end; 1517 run; kon.-LK koncern-LK.ramme
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.