3

すべての人に知られているように、SASは文内の引用符に特別な注意を払う必要があります。

例えば

%let quoted="I'd like to";
data temp;
    set temp;
    quoted="&quoted";
run;

送信時にエラーが発生しました。

実際、引用符を含むレコードが多数ある別のデータセットから1つのデータセットにデータをコピーする必要があります。割り当てると、エラーの発生とデータステップの実行が停止し、残りのコードが無効になります。したがって、この場合、重複した引用符を追加して元のデータセットを変更することはできません。これは意味がありません。

それで、「私がしたい」のように複製されたものを追加する代わりに、エラーを回避する、またはデータステップを実行し続けるようにする他の方法はありますか?

ありがとう、

4

2 に答える 2

5

マクロ言語 (%let コマンドを含む) を使用する場合、テキスト文字列を識別するために引用符を使用したくありません。文字列に単一引用符を配置するには、%str() などのマクロ ユーティリティ マスキング関数のいずれかを使用する必要があります。%let を使用して、一致しない単一の引用符をマクロ変数に配置する正しい構文を以下に示します。一重引用符の前の % 記号は、後続の文字 (一重引用符) をリテラルとして使用する必要があることを SAS に伝えるためのエスケープ文字です。また、必須ではないため、%let から二重引用符を削除したことにも注意してください。

%let quoted=%str(I%'d like to);
data temp;    
    quoted="&quoted";
run;

乾杯 ロブ

于 2011-05-10T20:02:30.387 に答える
2

実際の状況で何を達成しようとしているのかわかりませんが、上記の状況では、データステップで二重引用符を削除することで解決できます。

%let quoted="I'd like to";
data temp;
    set temp;
    quoted=&quoted;
run;
于 2011-05-10T06:03:26.303 に答える