获取正在运行的SAS程序的名称

获取正在运行的SAS程序的名称,sas,sas-macro,Sas,Sas Macro,是否有识别正在执行的SAS代码/程序的一般建议 我的代码将在通用宏中执行,因此可以在存储进程、另一个宏、客户端SAS程序中调用,甚至可以在使用IOM通过中间层生成的SAS代码中调用。我想要尽可能高级别的标识符。。(如果再次运行相同的程序,将返回相同的结果-因此进程id将没有帮助) 环境不是windows,因此此代码没有帮助: %put %sysget(SAS_EXECFILENAME); 此外,宏不一定是调用的第一个程序(如果它甚至是一个程序),因此这段代码也没有帮助: proc sql no

是否有识别正在执行的SAS代码/程序的一般建议

我的代码将在通用宏中执行,因此可以在存储进程、另一个宏、客户端SAS程序中调用,甚至可以在使用IOM通过中间层生成的SAS代码中调用。我想要尽可能高级别的标识符。。(如果再次运行相同的程序,将返回相同的结果-因此进程id将没有帮助)

环境不是windows,因此此代码没有帮助:

%put %sysget(SAS_EXECFILENAME);
此外,宏不一定是调用的第一个程序(如果它甚至是一个程序),因此这段代码也没有帮助:

proc sql noprint;
select xpath into :progname
from sashelp.vextfl where upcase(xpath) like '%.SAS';
%put &progname;

在我看来,您可能需要仔细考虑如何更多地使用它。如果同一用户打开了两个运行相同代码的会话,该怎么办?应该使用相同的文件名吗

您能简单地将在代码运行之前必须指定某个变量作为代码的一个要求吗?否则返回错误/中止进一步处理


回答您最初的问题,但我认为这是不可能的。

您打算如何处理这些信息?这些信息将用于命名要存储在单独位置的mfile(已解析)代码。这不是一个大问题,因为我可以只使用一个时间戳,这将是很好的,如果这个信息是可用的!我相信这个问题已经存在一段时间了。。这可能是因为没有答案/无法确定,因为正在执行的代码从未保存过-因此实际上并不“存在”!我同意。需要一个用于存储文件的宏参数…或者像前面提到的问题一样,接受时间戳。我们无法控制代码调用宏的内容,因此无法使用参数。用户id/会话id和时间戳的组合必须是前进的方向!谢谢