Fail to replace multiple targets using tranwrd using a loop.

Reply
Occasional Learner
Posts: 1

Fail to replace multiple targets using tranwrd using a loop.

*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;

PROC Star
Posts: 253

Re: Fail to replace multiple targets using tranwrd using a loop.

@Kelroy22:

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
Ask a Question
Discussion stats
  • 1 reply
  • 331 views
  • 0 likes
  • 2 in conversation