gpt4 book ai didi

sas - 我可以更改 SAS 中 CALL EXECUTE 堆栈的执行顺序吗?

转载 作者:行者123 更新时间:2023-12-01 04:50:21 24 4
gpt4 key购买 nike

我正在使用 SAS 9.1.3 在 DATA 步中调用一个宏,但该宏会生成一个 PROC REPORT 步骤,因此我正在使用 CALL EXECUTE 来调用它,生成所有这些 PROC REPORT 步骤,然后执行它们全部在数据步骤之后。

我正在使用一个数组,每次都会对该数组中的每个元素执行宏:

DATA macro_test;
ARRAY questions[3] $ 32 ('question1' 'question2' 'question3');

DO i=1 to 3;
a_question = questions(i);
CALL EXECUTE( "%report_by_question(a_question)" );
end;

RUN;

问题是,报告输出(通常)是倒过来的——它会先打印问题 3,然后是 2,然后是 1。

有没有办法修改 CALL EXECUTE 的执行顺序,以便我可以按顺序打印问题报告,或者它只是做自己的事情?

谢谢!

最佳答案

我假设你的意思是你的 call execute() 行更像这样:

 CALL EXECUTE( "%report_by_question(" || trim(left(a_question)) || ");" ); 

通过测试宏,我得到了一些这样的日志行,表明 call execute() 以正确的顺序发生。你有类似的东西吗?

%macro report_by_question(a);
data test_&a;
do i=1 to 10000000;
output;
end;
run;
%mend;

日志

NOTE: CALL EXECUTE generated line.1   + data test_question1;   do i=1 to 10000000;     output;   end; run;NOTE: The data set WORK.TEST_QUESTION1 has 10000000 observations and 1 variables.NOTE: DATA statement used (Total process time):      real time           6.14 seconds      cpu time            0.45 seconds1   +                                                                   ;2   + data test_question2;   do i=1 to 10000000;     output;   end; run;NOTE: The data set WORK.TEST_QUESTION2 has 10000000 observations and 1 variables.NOTE: DATA statement used (Total process time):      real time           3.87 seconds      cpu time            0.53 seconds2   +                                                                   ;3   + data test_question3;   do i=1 to 10000000;     output;   end; run;NOTE: The data set WORK.TEST_QUESTION3 has 10000000 observations and 1 variables.NOTE: DATA statement used (Total process time):      real time           3.12 seconds      cpu time            0.45 seconds

关于sas - 我可以更改 SAS 中 CALL EXECUTE 堆栈的执行顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1379671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com