0
我正在調查由我的高級編寫的一個SAS宏代碼進程。我無法理解所寫的代碼。在宏代碼的一個它這個說法%macro2
與其他一些計算寫入後寫成瞭解SAS宏代碼
%macro1(macro2(pm1, pm2, pm3))
。
任何一個可以幫助我理解上述
我正在調查由我的高級編寫的一個SAS宏代碼進程。我無法理解所寫的代碼。在宏代碼的一個它這個說法%macro2
與其他一些計算寫入後寫成瞭解SAS宏代碼
%macro1(macro2(pm1, pm2, pm3))
。
任何一個可以幫助我理解上述
首先提到的代碼的處理,確保你的語法,您在計算器上提交是正確的 - 你有一個未封閉的括號和代碼段應如下像這樣:
%macro1(macro2(pm1, pm2, pm3))
你提出的代碼很容易實現。
%macro t1(arg);
%put NOTE: t1;
%&arg.;
%mend t1;
%macro t2(arg2);
%put NOTE: t2;
%put NOTE: Arg 2 = &arg2.;
%mend t2;
%t1(t2(test));
輸出:
NOTE: t1
NOTE: t2
NOTE: Arg 2 = test
基本上,要傳遞的字符串來調用的內宏爲參數傳遞給外宏。您可以通過符號&符號來引用內部宏。在上面的代碼片段中,我創建了兩個宏和T1宏引用這樣的說法:
%&arg.;
它解析爲:
MLOGIC(T1): Beginning execution.
MLOGIC(T1): Parameter ARG has value t2(test)
MLOGIC(T1): %PUT NOTE: t1
SYMBOLGEN: Macro variable ARG resolves to t2(test)
MLOGIC(T2): Beginning execution.
MLOGIC(T2): Parameter ARG2 has value test
並允許代碼正常運行 - 調用宏作爲另一個宏的參數。