Macros 如何创建热键来检查变量名是否有效
如前所述 “您应该使用与命名变量相同的谨慎来命名变量 第一个孩子。” SAS的32个字符限制有时会使这变得困难。如果知道一个给定的名称是否有效,那就太好了。幸运的是,SAS为此提供了一个函数: 有了它,我们可以构造一个脚本,告诉我们自己的名字是否有效(NVALID似乎不能直接在Macros 如何创建热键来检查变量名是否有效,macros,sas,Macros,Sas,如前所述 “您应该使用与命名变量相同的谨慎来命名变量 第一个孩子。” SAS的32个字符限制有时会使这变得困难。如果知道一个给定的名称是否有效,那就太好了。幸运的是,SAS为此提供了一个函数: 有了它,我们可以构造一个脚本,告诉我们自己的名字是否有效(NVALID似乎不能直接在%PUT语句中工作) 这可以变成一个宏 %macro CheckValidity(name_to_check); data _null_; isValid = nvalid("&name_to_chec
%PUT
语句中工作)
这可以变成一个宏
%macro CheckValidity(name_to_check);
data _null_;
isValid = nvalid("&name_to_check", 'v7');
if isValid then put "WARNI%str(NG-) Valid name: &name_to_check";
else put "ERR%str(OR-) Invalid name: &name_to_check";
run;
%mend;
%CheckValidity(IsThisAValidName?);
此外,我们还可以在键中选择菜单
提交“%CheckValidity();”
当然,这种特殊的绑定几乎毫无价值。也就是说,除非我们有办法向函数提供输入
为此,我想到了两种可能性:
将选定文本绑定到宏变量。然后可以通过submit”%CheckValidity(&selected_text);“
以某种方式使用键
粘贴
关键字李>
这两种方法我都不走运
在案例1中,不清楚如何使增强的编辑器具有自我意识。也就是说,我不知道如何将所选文本绑定到宏变量
在案例2中,paste
关键字是如何工作的还不清楚,因为实际上没有关于它的任何文档。无论何时我使用它,我都会
错误:必须粘贴到输入字段。
我的问题是:
有没有办法将所选文本绑定到宏变量
是否可以使用paste
命令将所选文本粘贴到
宏
有没有其他方法可以完成同样的任务
当然,同样的任务也可以用AutoHotKey之类的工具轻松完成。但是,仅使用SAS就可以完成吗??有效变量名的SAS规则非常简单。必须以uu或字母开头,并且只包含uu、字母或数字。您希望它如何工作?突出显示文本,点击FXX键,它会检查吗?会发生什么。老实说,这些规则非常简单,编辑器的底部(base)有一个列指示符,计算起点和终点是否为32个字符并不困难。就投资功能开发而言,这将是非常低的。你可以把它作为一个想法加入到列表中。是的。选择文本,当按下FXX键时,将所选文本传递到%CheckValidity()
宏中。我知道这个要求似乎不寻常。不管怎样,通过我建议的方法或其他方法,这样的自动化是可能的吗?
%macro CheckValidity(name_to_check);
data _null_;
isValid = nvalid("&name_to_check", 'v7');
if isValid then put "WARNI%str(NG-) Valid name: &name_to_check";
else put "ERR%str(OR-) Invalid name: &name_to_check";
run;
%mend;
%CheckValidity(IsThisAValidName?);