2

要約すると、私は次のことを達成するのに苦労しています。

data _null_;
input x  $ 1-50 ;
call symput('problem',x);
cards4;
'this' "is '' my "string"" from 'hell!
;;;;
run;

data _null_;
x="%superQ(problem)";
put x=;
run;

superq 関数は、不一致の引用符を適切に管理しますが、連続する引用符 ("") は変数 X の単一引用符に解決されます。

これはアドレス可能ですか?

現在の結果:

x='this' "is '' my "string" from 'hell!

望ましい結果:

x='this' "is '' my "string"" from 'hell!
4

1 に答える 1

3

簡単な答えは、ここで SYMGET を使用できるということです。

data _null_;
x=symget("problem");
put x=;
run;

何らかの理由でそれができない場合は、コンテキストに関する詳細情報を提供してください。また、Toby (SAS-L マクロ引用の第一人者) またはここにいる他の何人かの人々に、SYMGET を使用せずにこれを処理するための提案があるかどうかを確認できるかどうかも確認します。

SAS-L から、FriedEgg (Matt) が次の追加ソリューションを投稿しました。

resolve=resolve('%superq(problem)');

彼はまた、それを制御できる場合は、途中でマスクすることができると述べています。

data _null_;
input x  $ 1-50 ;
call symput('problem',quote(x));
cards4;
'this' "is '' my "string"" from 'hell!
;;;;
run;

data _null_;
  x=&problem;
  put x=;
run;
于 2013-06-05T14:10:32.430 に答える