首页 > 解决方案 > 在 SAS 中派生唯一的 libref 和/或 fileref

问题描述

我经常需要分配(和取消分配)临时 librefs/filerefs 作为实用程序宏的一部分 - 因此我需要避免与任何现有 librefs/filerefs 的命名冲突。我知道我可以查询 sashelp 或字典表并使用条件逻辑进行迭代,直到找到未分配的表,但我想知道是否有更简单的方法?

例如,以下将在工作库中创建一个唯一命名的数据集:

data;run;

librefs / filerefs 是否有一些等价物?

标签: sassas-macro

解决方案


FILENAME() 函数已经为此提供了一种方法。当您使用 fileref 的缺失值调用它时,它会使用 #LNnnnnn 格式生成一个。

6     data test;
7       length fileref $8 ;
8       rc=filename(fileref,,'temp');
9       put rc= fileref=;
10    run;

rc=0 fileref=#LN00056
NOTE: The data set WORK.TEST has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds


11    %global fileref ;
12    %let rc=%sysfunc(filename(fileref,,temp));
13    %put &=rc &=fileref ;
RC=0 FILEREF=#LN00058

推荐阅读