首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS在宏观上执行-向后执行

SAS在宏观上执行-向后执行
EN

Stack Overflow用户
提问于 2013-05-03 02:42:06
回答 3查看 1.6K关注 0票数 0

我正在使用Macro Arrays and Do Over Macro

我想用do over宏重写这段代码:

代码语言:javascript
复制
if mysequence > 4 then grammar_last_5 = grammar_last_4;
if mysequence > 3 then grammar_last_4 = grammar_last_3;
if mysequence > 2 then grammar_last_3 = grammar_last_2;
if mysequence > 1 then grammar_last_2 = grammar_last_1;

所以我的重做看起来像这样:

代码语言:javascript
复制
%do_over(values=2-5, phrase= if mysequence > %eval(6-?) then grammar_last_%eval(7-?) = grammar_last_%eval(6-?);)

但这并不管用。

有谁知道如何做到这一点吗?

谢谢!!亚当

EN

回答 3

Stack Overflow用户

发布于 2013-05-03 15:13:30

对于其他想知道的人来说,宏似乎可以在这里获得:http://www.sascommunity.org/wiki/Tight_Looping_with_Macro_Arrays

不过,你有个问题。您正在尝试传入%eval(6-?)以及其他功能,如%do_over宏中的文本。它将尝试计算该函数,并将结果传递给宏,因为它在应该是数学运算的操作中找到一个字符,我猜它随后会抛出一点脾气。

更重要的是,一种做你想做的事情的方法似乎不会出现,因为当你将函数作为参数输入时,你需要从宏编译器中屏蔽它,但是当它实际被do_over使用时,你需要向宏编译器揭开它,我猜do_over如果不重写它的逻辑,即使你成功了,也不会理解你想要的东西。

请允许我谦虚地推荐您自己的宏代码作为开始解决方案。类似于:

代码语言:javascript
复制
%do i = 5 %to 2 %by -1;

if mysequence > %eval(&i - 1) then grammar_last_&i = grammar_last_%eval(&i - 1);
%end;

这应该会生成您想要的文本,尽管您需要将其放入您自己的宏中,并在数据步骤中调用它,因为它在其他任何地方都没有多大意义。

如果你想要更通用的东西,你将不得不让你的手变得更加混乱……

票数 1
EN

Stack Overflow用户

发布于 2013-05-03 07:01:51

我快速查看了一下宏,发现它们使用了宏引用函数,这可能会干扰您的%eval函数的执行。

如果是这种情况,那么您将不得不自定义编辑%do_over(),这样它就不会这样做。如果是这样的话,可能就不值得这么做了。编写您自己的一次性宏来实现您的目标会更容易。

票数 0
EN

Stack Overflow用户

发布于 2013-05-03 23:29:25

你不需要一个宏,除非你有什么事情没有告诉我们。

代码语言:javascript
复制
if mysequence > 4 then grammar_last_5 = grammar_last_4;
if mysequence > 3 then grammar_last_4 = grammar_last_3;
if mysequence > 2 then grammar_last_3 = grammar_last_2;
if mysequence > 1 then grammar_last_2 = grammar_last_1;

->

代码语言:javascript
复制
array  grammars grammar_last:;
do _t = 4 to 1 by -1; *or, _t = dim(grammars)-1 to 1 by -1;
 if mysequence > _t then grammars[_t+1]=grammars[_t];
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16345430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档