正如Robert Martin所说,
SAS的32个字符限制有时会让这很困难。知道给定的名称是否有效会很高兴。幸运的是,SAS为此提供了一个功能:NVALID。"您应该使用您命名的相同护理来命名变量 第一个孩子。"
有了这个,我们可以构建一个脚本,告诉我们我们的名字是否有效(NVALID似乎没有直接在%PUT
语句中工作)。
data _null_;
name_to_check = 'isThisAValidNameOrIsItTooLong';
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;
这可以变成一个宏。
%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?);
此外,我们可以在KEYS
菜单中bind this macro to a key。
submit "%CheckValidity();"
当然,这种特殊的约束几乎毫无价值。也就是说,除非,我们有办法为函数提供输入。
为此目的会想到两种可能性:
submit "%CheckValidity(&selected_text);"
KEYS
paste
关键字。 我对这两种方法都没有任何好运。
在案例1中,目前尚不清楚如何使增强编辑器具有自我意识。也就是说,我不知道如何将所选文本绑定到宏变量。
在案例2中,我们不清楚paste
关键字的工作原理,因为它实际上并没有任何文档。每当我使用它时,我都会
ERROR: You must paste into an input field.
我的问题是这些:
paste
命令将所选文本粘贴到当然,使用AutoHotKey之类的东西可以轻松完成同样的任务。但是只能用SAS来完成吗?