我使用此论坛收集有关在SAS EG任务和查询中创建和使用提示的信息。但是,我似乎无法从Base SAS转移我自己的语法,合并/引用我创建的提示/宏,并让它工作。
目前,每当我在自己的程序中引用提示时(而不是通过SAS EG中的点击选择生成的提示),日志会告诉我SAS无法解析宏引用。
如何将自己的程序转移到SAS EG中,然后集成提示?
我用来开发测试数据集的示例代码:
data work.testscores;
input Gender $ 1-6 SATScore 8-11 IDNumber 13-20;
datalines;
Male 1170 61469897
Female 1090 33081197
Male 1240 68137597
Female 1490 9589297
Male 1200 93891897
Female 1080 26212897
Male 1050 8945097
Female 1200 51799397
Male 1600 39196697
;
run;
/ 使用性别变量 /
在提示管理器中创建了性能提示PROC SQL;
CREATE table WORK.testscores2 as
SELECT &Genders, SATScore
FROM WORK.TESTSCORES
;
QUIT;
日志:
102 PROC SQL;
103 CREATE TABLE WORK.TESTSCORES2 AS
104 SELECT &Genders
WARNING: Apparent symbolic reference GENDERS not resolved.
104 SELECT &Genders
_
22
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string,
a numeric constant, a datetime constant, a missing value, BTRIM, INPUT, PUT,
SUBSTRING, USER.
105 FROM WORK.TESTSCORES;
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
106 QUIT;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
感谢,A
答案 0 :(得分:1)
我不明白你想用代码实现什么。你想根据你在提示中设置的宏变量的值选择男性或女性SAT成绩吗?
proc sql;
create table work.testscores2 as
select gender, satscore
from work.testscores
where gender = &genders.;
/* Where the value of &genders is either 'Male' or 'Female' */
quit;
答案 1 :(得分:1)
根据主题启动器的评论判断,看起来有一些误解EG工作中的提示。在运行程序之前,它不是为某些宏变量赋值的工具。 “提示”表示程序会提示您在程序运行期间输入值。但是为此,你必须将你的提示分配给coressponding程序,这样当你运行这个特定的程序时,SAS会调用这个特定的提示。为此:right click on the task -> Properties -> Prompts -> Add
。
答案 2 :(得分:0)
要使用在提示中创建的宏变量,您需要选中“在整个项目中使用提示值”框。