如何创建热键以检查变量名称是否有效

时间:2017-03-31 23:10:26

标签: macros sas

正如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();"

当然,这种特殊的约束几乎毫无价值。也就是说,除非,我们有办法为函数提供输入。

为此目的会想到两种可能性:

  1. 将所选文本绑定到宏变量。然后,可以通过submit "%CheckValidity(&selected_text);"
  2. 将所选文本输入宏
  3. 以某种方式使用KEYS paste关键字。
  4. 我对这两种方法都没有任何好运。

    在案例1中,目前尚不清楚如何使增强编辑器具有自我意识。也就是说,我不知道如何将所选文本绑定到宏变量。

    在案例2中,我们不清楚paste关键字的工作原理,因为它实际上并没有任何文档。每当我使用它时,我都会

    ERROR: You must paste into an input field.

    我的问题是这些:

    1. 有没有办法将所选文本绑定到宏变量?
    2. 可以使用paste命令将所选文本粘贴到
      的输入中 宏?
    3. 还有另一种方法可以实现同样的任务吗?
    4. 当然,使用AutoHotKey之类的东西可以轻松完成同样的任务。但是只能用SAS来完成吗?

0 个答案:

没有答案