2017-05-19 18 views
1

マクロでコロン修飾子機能を使用しようとしていますが、データステップと同じように機能していないようです。私がしようとしていることの例を以下に示します。マクロ内のコロン修飾子

data _null_; 
str = "hello"; 
if str =: "h" then put "y"; 
else put "n"; 
run; 

if-statementは、データステップでTRUEを評価していないが、私はマクロ言語で同様のロジックを適用すると、これはもはや動作しているように見えます。

%let str = hello; 
%put %eval(&str =: h); 

上記のコードは、FALSEと評価されています。私がここで紛失しているものがあるのですか、またはこの修飾語はマクロ言語では利用できませんか?私は%eval(%substr(&str,1,1)=h)を使うことができると知っていますが、:が動作するかどうかを調べるのはもっと興味があります。

答えて

2

いいえ、:はマクロ演算子のリストにありません。詳細はmacro language referenceをご覧ください。

=:は、PROC SQLなど他の場所でも無効です。これらのコンテキストでは、eqtは同等の演算子ですが、マクロ言語でも機能しません。

+1

洞察をいただきありがとうございます。私はSASバージョンと関係があるのか​​どうかは分かりませんが、 'WHERE'ステートメントで' =: 'を使うことができます。例: 'proc print data = sashelp.class;ここでname =: 'Al'; '。 –

+0

@J_Lardうーん、私はそれについて間違っていると思う - 訂正した。ありがとう。 – Joe