SASは

2016-10-10 1 views
0

私は今、新しいコンピュータ上で、それは私がSQLSASは

と私のマクロ変数を作成

をanyomoreしません(のような1週間前) とを仕事に使用されるコードに問題があります

proc sql noprint;  
select count(distinct(num_nation)) into :nb_country from AFGp 
; 
%let nb_country = &nb_country; 
select distinct(num_nation) into :pays1 - :pays&nb_country from AFGp; 
select count(*) into :nbvar from variables; 

%let nbvar=&nbvar; 

select variable, var_label, lbl_categ into :var1 - :var&nbvar, :lab1 - :lab&nbvar, :labc1 - :labc&nbvar from variables 
; 
quit; 
run; 

とVARで始まるマクロ変数を認識しません。このマクロ:例えば

%macro testtest(); 

%do j = 1 %to %eval(&nb_country); 

    %do i = 2 %to %eval(&nbvar); 
     proc freq data=AFGp noprint; 
      tables &&var&i./nocol nocum nofreq nowarn out=_TFP_&j._&i; 
      where num_nation = &j; 
     run; 
     %end; 
    %end; 

%mend; 

: この

0123このの
%let j=4; 
%put &j &var4 &&var&j; 

リターン:

4 Female &&var4 

このコードは正常に解決されるために使用され、それがanyomoreない理由私は理解していません。

あなたは私を助け、あるいは正しい方向に私を置くことができれば、これは今

答えて

1

構文の問題が混ざり合っパーサを取得することができ、あなたは、リセットする(ジョーによってexplainedとして)魔法の文字列を実行する必要があります。

%*;*;*';*";%*%mend;*); 

これはあなたのコードの問題ではないかもしれない - それができます部分的なコードブロックを強調表示して実行することによって(例えば、ベースSASにおいて)トリガされる。

+0

ありがとう!私は再びそれを越えて来たら、これは間違いなく助けになるでしょう。行方不明については、コードを貼り付けると消えてしまいました(上書き)。それはコード内にあった、私は警告がありませんでした –

+1

私の答えは ';'についての部分を省略するように更新しました。ハッピーコーディング:-) –

0

私はSASを再起動し、そして今、同じコードが動作する3時間のための私をブロックしています。

これはなぜ以前にはうまくいかなかったのでしょうか、あるいはこれがいくつかの再興問題であったとしても、私はまだ考えていませんが、明らかにSASのモットーは「疑わしい時に再開!

+1

閉鎖されていない見積もり、マクロ定義、またはマクロ機能をマスクするものがある場合があります。再起動はそれを解決する最も簡単な方法です。 – DomPazz

+0

ありがとうございます。これは将来的に役立ちます! –