Sas 创建提示时出现错误

Sas 创建提示时出现错误,sas,prompt,Sas,Prompt,我需要创建一个提示。实际上,我创建了另外两个,没有问题,但是在创建提示符时,其中一个变量是不同的。我需要这样做,如下所示: %macro param_list; %global list_selected ; %let i=1; %let p_lst_tmp = %scan(&VID,&i); %do %while(&p_lst_tmp ne); %let list_sele

我需要创建一个提示。实际上,我创建了另外两个,没有问题,但是在创建提示符时,其中一个变量是不同的。我需要这样做,如下所示:

         %macro param_list;
            %global
    list_selected
    ;
     %let i=1;
     %let p_lst_tmp = %scan(&VID,&i);
      %do %while(&p_lst_tmp ne);
    %let list_selected = &list_selected "%scan(&VID,&i)";
    %let i = %eval(&i+1);
    %let p_lst_tmp = %scan(&VID,&i);
       %end; 
        %put list_selected = &list_selected;
          %mend;
然后在我创建的代码中

  PROC SQL;
  CREATE TABLE Student_Pre AS
  SELECT  t1.personid LABEL="PIDM" AS PIDM,
      t1.V_ID as VID,
          t1.FIRST_NAME
  FROM ENROLL.Student_Dim t1
 WHERE t1.v_id = &list_selected
  ORDER BY t1.personid;
   QUIT;
但是这段代码给出了一个错误,错误22-322:语法错误,应为以下之一:;,!,!!,&,(,*,+,-,'。,/,=,AND,EQ,EQT,EXCEPT,GE,GET,GROUP,GT,GTT,HAVING,INTERSECT,LE,LET, LT,LTT,NE,NET,NOT,OR,ORDER,OUTER,UNION,^,^,^=,|,| |,~,~=

错误76-322:语法错误,将忽略语句


我应该如何更改代码?

什么是&VID?它是某个变量的内容,还是之前定义了一个宏变量?更详细地询问您想做什么(什么是VID,您的提示做什么,等等),这是一种非常糟糕的方法,无论你想做什么,都可以显示一种更好的方法。如果它实际上是一个列表(并且可能需要额外的工作,具体取决于&VID中的内容),则至少需要t1.v_id的位置(&list_选中).VID是提示名称。我需要创建一个参数,该参数为VID variableMy提示是一个简单的提示,用户在单行中输入值和单个值。这是在创建一个列表,因此如果&VID可以有多个值,则必须在中使用
。如果它只是一个值,则可能可以执行类似于%sysfunc(压缩(…)的操作如果问题是不干净的数据,请将其清除。如我所说,将您的
%put(&vid);
发布。