如何使用 sas 提示符使用多个文本值
How to use multiple text values using sas prompt
我正在尝试创建一个允许用户从列表中输入多个值的提示。我将提示类型用作 Text.
填充提示的方法:User select 来自静态列表的值
值的数量:多个值
我将提示的名称保留为 Products。基本上我想要一个宏,它的值例如 "product 1","product 2", Product 3", "product 4" 用逗号分隔。
当我尝试解析产品宏时,无论我 select 在提示中有多少产品,它总是解析第一个产品。这里它总是只解析贷款作为对产品宏的解析。我希望我 select 中的所有产品通过提示进入宏 product。示例 ("loan","Overdraft","RCF") 请建议在这种情况下要做什么
我做了一个提示,"Color",用彩虹的六种颜色,按照你描述的设置(和 "use throughout project")。
然后我将其附加到以下程序中:
%put _global_;
而我看到的是这个;
8 %LET Color0 = 4;
9 %LET Color2 = Red;
10 %LET Color3 = Yellow;
11 %LET Color4 = Orange;
12 %LET Color1 = Blue;
13 %LET Color_count = 4;
14 %LET Color = Blue;
这就是多值提示的工作原理:他们将第一个选择放在 &prompt
,然后将选择的项目数放在 &prompt0
,然后将选择的项目放在 &prompt1-&&prompt&prompt0
].然后,您可以通过多种方式使用它们。你可以
%do i = 1 %to &color0.;
%put &&color&i.;
%end;
例如
..几年后(可能是 SAS 9.4 的变化),但还有其他因素需要考虑。
如果您提供“(所有可能的值)”选项,并且用户做出此选择,则
- &PromptValue = ALL_VALUES
- &Prompt_Count = 1
- &Prompt0 = listcount - 1
- &Prompt1 .. PromptX 包含列表中的一项
..强迫你使用像这样的微宏来连接它们(组装学术术语 FL、WN、SP、SM):
%MACRO GetPrompt;
%IF "&Terms" = "_ALL_VALUES_" %THEN %DO;
%LET Terms = %sysfunc(catx(|, &Terms1, &Terms2, &Terms3, &Terms4));
%END;
%ELSE %DO;
%DO inx = 2 %TO &TERMS_COUNT;
%LET Terms = %sysfunc(catx(|, &Terms, &&Terms&inx));
%END;
%END;
%MEND GetTerms;
我正在尝试创建一个允许用户从列表中输入多个值的提示。我将提示类型用作 Text.
填充提示的方法:User select 来自静态列表的值
值的数量:多个值
我将提示的名称保留为 Products。基本上我想要一个宏,它的值例如 "product 1","product 2", Product 3", "product 4" 用逗号分隔。
当我尝试解析产品宏时,无论我 select 在提示中有多少产品,它总是解析第一个产品。这里它总是只解析贷款作为对产品宏的解析。我希望我 select 中的所有产品通过提示进入宏 product。示例 ("loan","Overdraft","RCF") 请建议在这种情况下要做什么
我做了一个提示,"Color",用彩虹的六种颜色,按照你描述的设置(和 "use throughout project")。
然后我将其附加到以下程序中:
%put _global_;
而我看到的是这个;
8 %LET Color0 = 4;
9 %LET Color2 = Red;
10 %LET Color3 = Yellow;
11 %LET Color4 = Orange;
12 %LET Color1 = Blue;
13 %LET Color_count = 4;
14 %LET Color = Blue;
这就是多值提示的工作原理:他们将第一个选择放在 &prompt
,然后将选择的项目数放在 &prompt0
,然后将选择的项目放在 &prompt1-&&prompt&prompt0
].然后,您可以通过多种方式使用它们。你可以
%do i = 1 %to &color0.;
%put &&color&i.;
%end;
例如
..几年后(可能是 SAS 9.4 的变化),但还有其他因素需要考虑。 如果您提供“(所有可能的值)”选项,并且用户做出此选择,则
- &PromptValue = ALL_VALUES
- &Prompt_Count = 1
- &Prompt0 = listcount - 1
- &Prompt1 .. PromptX 包含列表中的一项
..强迫你使用像这样的微宏来连接它们(组装学术术语 FL、WN、SP、SM):
%MACRO GetPrompt;
%IF "&Terms" = "_ALL_VALUES_" %THEN %DO;
%LET Terms = %sysfunc(catx(|, &Terms1, &Terms2, &Terms3, &Terms4));
%END;
%ELSE %DO;
%DO inx = 2 %TO &TERMS_COUNT;
%LET Terms = %sysfunc(catx(|, &Terms, &&Terms&inx));
%END;
%END;
%MEND GetTerms;