全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2377 4
2015-01-05
现在有两个宏变量 &file 和&ul;%let file=fileindex;
%let ul=11;

我实际上需要使用宏变量 &file11 (假定其已经赋值);

尝试了各种办法:
%put &file. &ul.;
%put  &&file.&ul.    ;
%put  &&file.%left(&ul.)    ;
%put  &&file.&ul.    ;
%put  &&file.&ul.    ;

结果显示各种不对;
求教如何合并起来使用?
====================================分割线=================================
之前的问题可能没表述清楚,实际问题是这样的:
我有一个文件的索引集 fileindex, 然后想把每个文件名放入一个宏变量中,ul (uplimit)代表最后一个文件名的编号,此处是970;
放完之后,我是想看一下最后一个宏变量,即&file970. ,但是970是事先不知道的,即我希望输出&&file&ul. 的值,我并不知道它是&file970;

data _null_;set fileindex nobs=m;
call symput('ul',m);
run;

proc sql noprint;
select x into: file1-:file%left(&ul.) from fileindex
;quit;

%put &file970;   显示了文件名,说明该宏变量存在,但用各种&&file&ul. 无法显示。

求教如何解决上述问题?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-1-5 14:30:55
复制代码
附件列表
QQ截图20150105143013.jpg

原图尺寸 62.66 KB

QQ截图20150105143013.jpg

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-5 15:22:21
楼主你好,宏变量连接解析的时候,不要加入那个“.”,因为&已经包含了宏变量起始和终止的意思也就是说,
%put &&file&ul;或者%put &&file&ul.;就可以达到&file11的效果了。

加入那个点之后,解析的时候,就会把那部分单独来看了,用楼主的程序来解释就是:
复制代码
复制代码
第三个那个加上%left和第二个一样的道理,所以也是不对的结果。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-6 13:41:43
问题所在之处是因为call symput的时候,没有把ul的空格去掉。
复制代码
试试这个程序。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-7 11:34:19
sniperhgy 发表于 2015-1-6 13:41
问题所在之处是因为call symput的时候,没有把ul的空格去掉。试试这个程序。
的确是细节决定结果``3Q大侠~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群