sas - 在 SAS 中派生唯一的 libref 和/或 fileref
问题描述
我经常需要分配(和取消分配)临时 librefs/filerefs 作为实用程序宏的一部分 - 因此我需要避免与任何现有 librefs/filerefs 的命名冲突。我知道我可以查询 sashelp 或字典表并使用条件逻辑进行迭代,直到找到未分配的表,但我想知道是否有更简单的方法?
例如,以下将在工作库中创建一个唯一命名的数据集:
data;run;
librefs / filerefs 是否有一些等价物?
解决方案
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
推荐阅读
- c++ - 用空格字符替换子字符串
- android - Android中的动态链接
- javascript - 当我向 ajax 图像预览添加其他图像时,之前的图像不会出现在输入类型 FILES 数组中
- jquery-ui - symfony 形式的 boostrap 4 datetimepicker
- html - 在 Bootstrap 中删除填充/边距
- python - Matplotlib - 图相互堆叠
- swift - Swift4滚动UITableview后,动画UITableview框架是错误的
- spring-boot - 骆驼 springboot 和 hawtio 集成
- google-analytics - 要在更多设置中设置的 Google 跟踪代码管理器字段?
- php - 提交表单后未显示成功消息