将语法传输到SAS EG并集成提示

将语法传输到SAS EG并集成提示,sas,enterprise-guide,Sas,Enterprise Guide,我使用这个论坛收集了有关在SAS任务和查询中创建和使用提示的信息。然而,我似乎无法从基本SAS转换我自己的语法,合并/引用我创建的提示/宏,并使其工作 目前,每次我在自己的程序中引用一个提示符(而不是SAS中点击选择生成的提示符),日志都会告诉我SAS无法解析宏引用 如何将自己的程序转移到SAS EG中,然后集成提示 我用于开发测试数据集的示例代码: data work.testscores; input Gender $ 1-6 SATScore 8-11 IDNumber 13-20

我使用这个论坛收集了有关在SAS任务和查询中创建和使用提示的信息。然而,我似乎无法从基本SAS转换我自己的语法,合并/引用我创建的提示/宏,并使其工作

目前,每次我在自己的程序中引用一个提示符(而不是SAS中点击选择生成的提示符),日志都会告诉我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;
/使用性别变量在提示管理器中创建了性别提示/

日志:


谢谢,要使用在提示中创建的宏变量,您需要选中“在整个项目中使用提示值”框


我不明白您希望通过代码实现什么。是否要根据在提示中设置的宏变量值仅选择男性或女性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;

从话题发起者的评论来看,似乎对EG中的提示如何工作存在一些误解。它不是一个在运行程序之前为某些宏变量赋值的工具。”“提示”表示程序在运行过程中提示您输入值。但为此,您必须将提示符指定给CoreSponding程序,这样当您运行此特定程序时,SAS将激活此特定提示符。为此:
右键单击任务->属性->提示->添加

您能提供代码和日志的示例吗?基本上,宏变量是如何通过SAS代码或EG Prompt Manager创建的没有区别。因此,代码中可能存在一些问题。当然,谢谢Shopin。我假设,您已将此提示指定给程序,以便在运行它时,弹出提示窗口并输入所需的值。输入什么值?Dmitry我正在使用它,只需选择性别列。因此,我将提示分配给testscores数据集,并选择变量类型并加载性别变量(尽管我将宏变量称为“Genders”。当我运行程序时,提示框不会出现。我想知道,您是如何将提示分配给数据集的?它只能分配给任务。谢谢Joe,但这似乎并不能解决问题。我相信这适用于当宏变量被多次引用时,希望提示重新出现的情况在程序中-此时,我只引用它一次。该复选框允许您在代码中的任何点访问宏变量。例如,如果您有一个名为“Period”的提示,如果您选中此复选框,则可以通过
&Period.
(宏变量)在程序中访问提示值。如果不检查,则无法在代码中访问它。这与提示出现的时间无关。根据您提供的代码,我认为我的答案和Havard的答案都是必需的。您不能使用&Genders。如果它应该包含“男性”,您该怎么做;这是列名,不是数据。但是如果没有解析&Genders,那是因为您没有选中该框。谢谢Joe-我感谢您的输入-我只是尝试选择性别列,而不是该列中的指定值。即使我选择了选项,您建议的代码仍然不起作用。与Havard一样,您有一个句号a在宏变量之后-为什么会这样?尽管这样做似乎不能使我的代码正常工作。
¯ovar。
从技术上讲是宏变量的定义。句点/句号是结尾分隔符。如果其他无效字符(如空格)无效,则它是可选的出现;但是如果您有,比如说,
&myvar\u someothertext
,并且意味着
&myvar
是一个合法的宏字符,因此需要
&myvar.\u someothertext
。抱歉-我不想只选择男性或女性,我只是编写了一个简单的sql来选择性别列。即使我使用了您的版本,c创建一个指定性别值的提示,它不起作用,并返回相同的错误。我还注意到,在宏变量后有一个句号-我不知道为什么。我在SAS Base中没有这样做,我也尝试过,但它仍然返回相同的错误。我同意我一定是误解了这一错误。但谢谢,关于最后一点t右键单击会弹出提示!
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
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;