*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
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.