簡體   English   中英

調用宏到另一個宏sas

[英]Call a Macro in to another macro sas

我想在另一個宏中調用一個宏,這將創建一個想要在另一個宏中使用的Macro變量。 但是輸出是“警告:尚未解析表觀符號引用TEST33”。

data Base1;
input v1 v2 v3;
datalines;
1 7 8
;
run;

%let number = 6;
%Macro test1;    
proc sql noprint;
    select
    case when (
        case when &number eq 3 then v1
             when &number eq 6 then v2
             when &number eq 12 then v3
        end ) ge 6 then 1 else 0 end into: Test22 from _last_; quit;
%let Test33 = &Test22;
%Mend test1;

options mlogic mprint symbolgen;
%Macro test2;
%test1
%put &= &Test33;
%Mend;
%test2;

您的代碼有兩個錯誤,但不確定是演示代碼的真正錯誤還是錯字。

無論哪種方式:

  1. 如果要在宏外部使用它,則需要將宏內部的變量聲明為GLOBAL。 宏變量具有范圍,即局部或全局。
  2. 當您的演示數據稱為BASE1時,您最后引用數據集。

這對我來說很好:

data Base1;
input v1 v2 v3;
datalines;
1 7 8
;
run;

%let number = 6;
%Macro test1; 
%global Test33; 
proc sql noprint;
    select
    case when (
        case when &number eq 3 then v1
             when &number eq 6 then v2
             when &number eq 12 then v3
        end ) ge 6 then 1 else 0 end into: Test22 from base1; quit;
%let Test33 = &Test22;
%Mend test1;

options mlogic mprint symbolgen;
%Macro test2;
%test1
%put &= &Test33;
%Mend;
%test2;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM