0

我正在使用 SAS 9.2,我得到了以下代码:

data success error;
length vague 3 path $150;
set foplist;
call symputx('error_count', rownum);
%if &&error&error_count = 0 %then %do;
path= "&&path&error_count";
vague=1;
output success;
%end;
%else %do;
...
%end;
run;

对于每条记录,我想获取 rownum,并将其与另一个宏变量结合起来。rownum 显示 foplist 数据集中记录的行号。出于某种原因,我总是得到数据集中的最后一个数字(可能是因为宏编译?)

例如: A --- rownum=1 B --- rownum=2

我只得到 rownum=2

知道如何解决吗?

谢谢!

4

1 回答 1

0

您无法在同一数据步中创建和解析宏变量。

您是否已经定义了宏变量 ERROR1-ERRORx 和 PATH1-PATHn 并希望根据 rownum 将这些值检索到数据步中?即解决&&ERROR&ERROR_COUNT

如果是这样,只需使用 symexist / symget ...

数据成功错误;
  长度模糊 3 路径 $150 ;
  设置 foplist ;
  如果 symexist(cats('ERROR',rownum)) 和 symexist(cats('PATH',rownum)) 则执行;
    error_count = symget(cats('ERROR',rownum)) ;
    如果 error_count = 0 则执行;
      路径 = symget(cats('PATH',rownum)) ;
      模糊 = 1 ;
      输出成功;
    结尾 ;
    否则输出错误;
  结尾 ;
  否则输出错误;
跑;
于 2013-11-29T12:08:37.183 回答