从本地宏列表创建一个变量列表(findname)

create a variable list from local macro list (findname)

我想在命令中使用局部宏中的变量列表,例如:

    local a int1 int2 num1 num2 bin1 bin2 ...
    local b int3 int4 bin3 num3  ...

这里的变量num* int*bin*分别是数值、整数和二进制。

我想 运行 对局部 a' and b' 中的变量进行 foreach 循环,但仅限那些整数值的变量,即 int1, int2, int3 , ...

为此,我使用 Nick Cox 创建的 findname 命令来查找整数值的变量,将相应变量名称的列表保存在局部宏中。但我不想 运行 它用于数据集中的所有变量,而只用于变量的子集(在局部变量中指定 ab 等),然后使用列表在随后的命令中。

所以对于局部 a' and b' 中的整数变量列表是局部 a_int' and b_int',我想使用如下:

    foreach var of varlist `a_int' `b_int'{
        whatever command
    }

如果我没理解错的话,您需要存储在本地宏中的两个列表的交集。为此,您可以使用宏扩展函数来操作列表:请参阅 help macrolists.

// Setup
local a x1 x2 x3 x4 x5
local b x4 x5 x6 x7 x8
local int x2 x3 x6

// Get intersection of variable lists and integer list
local a_int : list a & int
local b_int : list b & int

// Put a_int and b_int together and drop possible duplicates
local ab_int `a_int' `b_int'
local ab_int_uniq : list uniq ab_int

// Do something
foreach var of varlist `ab_int_uniq' {
    * do something
}