" in Makrovariable entfernen

Hallo Forum,

ich bitte bei folgendem Problem um Hilfe:

Ein Name enthält ein Hochkomma (').

data tmp;
name ="abc d'efg";
run;

Den Namen möchte ich nun in eine Makrovariable einlesen -> dazu muss ich quote() zur Hilfe nehmen, da sonst der Name nicht in eine Makrovariable eingelesen werden kann.

data _null_;
set tmp;
call symput('m_name', quote(left(name)));
run;

Die Ausgabe der Makrovariablen funktioniert:

%put &m_name;

"abc d'efg"

Die Anfoderung ist nun, die mit quote() zusätzlich angehängten "" wieder aus der Ausgabe zu entfernen, das eigentliche Sonderzeichen ' soll aber nicht entfernt werden, sondern mit ausgeben werden.
Ziel der Ausgabe: abc d'efg

Hierzu habe ich schon mit %sysfunc und compress verschiedene Möglichkeiten ausprobiert, z.B.

%put %sysfunc(compress(&m_name, "' ", "klu"));

--> leider bisher ohne Erfolg.

Über Ideen, wie ich aus der Ausgabe der Makrovariablen die "" wieder entfernen kann, würde ich mich sehr freuen!!!

Grüße
Hendrik Eisenberg

Tranwrd

Hallo Hendrik,

es geht bestimmt auch noch anders, aber folgende Lösung von mir. Der Trick, ich ersetzte das Hochkomma durch %str(%') mit der tranwrd-funktion, dann kann ich mir das quote im call symput sparen, im %put wird das dann wieder in ein einzelnes Hochkomma aufgelöst.

data tmp;
name="a''bc d'ef'g";
call symput('m_name', tranwrd(name,byte(39),byte(37)!!byte(115)!!byte(116)!!byte(114)!!byte(40)!!byte(37)!!byte(39)!!byte(41)));
run;
%put &m_name.;

Gruß
Wolfgang

PS: Die Werte in der Byte-Funktion sind natürlich vom Betriebssytem abhängig (ASCII oder EBCDIC)

Hallo Wolfgang, vielen Dank,

Hallo Wolfgang,

vielen Dank, tranwrd ist ein sehr guter Tipp! Mein Problem konnte damit gelöst werden.

Grüße
Hendrik