@Tom @Kurt_Bremser using HEX format seem to be a beautiful solution. I tried with Tom's code but it's not removing the leading and trailing spaces which I introduced in the macro variable. Am I missing something? Solution should handle any type of gibberish.
%let parameter= Sales, Operations, DataManaagement ;
data _null_;
length parameter $32767;
parameter=symget('parameter');
length char $1 ;
do index=1 to length(parameter);
char=char(parameter,index);
if not (' ' < char <= '~') then put index= char= $hex2. ;
end;
run;
data _null_;
call symputx('parameter',cats("'",tranwrd(compress(symget('parameter'),'090A0C0DA0'x),',',"','"),"'"));
run;
%put ¶meter;
Log:
How to interpret index and char value (index=7 char=20) in the log.
2 %let parameter= Sales, Operations, DataManaagement ;
83
84 data _null_;
85 length parameter $32767;
86 parameter=symget('parameter');
87 length char $1 ;
88 do index=1 to length(parameter);
89 char=char(parameter,index);
90 if not (' ' < char <= '~') then put index= char= $hex2. ;
91 end;
92 run;
index=7 char=20
index=19 char=20
index=20 char=20
index=21 char=20
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
93
94 data _null_;
95 call symputx('parameter',cats("'",tranwrd(compress(symget('parameter'),'090A0C0DA0'x),',',"','"),"'"));
96 run;
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
97
98 %put ¶meter;
'Sales',' Operations',' DataManaagement'
99
... View more