SAS-从代码文件中获取行号

SAS-从代码文件中获取行号,sas,Sas,当某种情况发生时,我想打印行号(来自SAS程序文件)。如何检索该值并打印它 我想这样做: %put 'An error occurred on line ' &LINE_NO; 好吧,我有个想法。首先编写一个包含所有断言的.sas文件。每个断言都是一个宏调用,它有一个占位符作为行号。所以mycode.sas看起来像: data want; set have; %assert( (x=y), line=_linenumber_) %assert( (a<b), line

当某种情况发生时,我想打印行号(来自SAS程序文件)。如何检索该值并打印它

我想这样做:

%put 'An error occurred on line ' &LINE_NO;

好吧,我有个想法。首先编写一个包含所有断言的.sas文件。每个断言都是一个宏调用,它有一个占位符作为行号。所以mycode.sas看起来像:

data want;
  set have;
  %assert( (x=y), line=_linenumber_)
  %assert( (a<b), line=_linenumber_)
run;
data want;
  set have;
  %assert( (x=y), line=3)
  %assert( (a<b), line=4)
run;
需要数据;
集有;
%断言((x=y),行=\u行号

%assert((我认为您很难做到这一点。即使是SAS也很难理解行编号的概念,尤其是当一行代码(例如宏调用或调用执行)时)可以生成许多SAS语句。好消息是,通常错误会打印在日志中,非常接近它们发生的位置。如果您给出一个示例,说明您提交的代码类型和所需的消息,人们可能会提供其他帮助。感谢您的回复Quentin。我正在创建一个简单的测试框架t将允许我调用断言宏。当其中一个断言失败时,我希望将断言调用的行号打印到日志中。你知道有什么方法可以做到这一点吗?我需要创建自己的测试框架,因为我无法将任何其他库安装到我工作的安全环境中。呃。断言是一个favo我的礼仪话题。我不知道如何打印行号。通常我打印断言的条件,可能还有辅助变量。可以想象一个计数器来计算调用的断言的数量,这样你就可以打印断言#I或任何东西。但是代码的行号似乎更难。希望其他人会有想法。对downvo非常好奇te-虽然我本身并不觉得这个问题对我很有用,但它绝对不是一个坏问题。这真是天才!我不敢相信我没有想到这一点。我仍然希望有一个系统定义的全局变量,称为LINE,可以提供行号。