全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1057 4
2020-12-17
代码:
%let code1=A1,B2,C3,D4;                                /*每次的分段数量在变化。*/
data _null_;
do i=1 by 1 while(scan("&code1.",i) ne '');
    aaa=scan("&code1.",i);
        call symput("code2",aaa);
        %put &code2;
        put aaa;
end;

run;

现在期望%put &code2;的输出与put aaa;的输出是一致的,即:
A1
B2
C3
D4
但是,现在第一次运行时输出:
    %let code1=A1,B2,C3,D4;             /*每次的分段数量在变化。*/
    data _null_;
    do i=1 by 1 while(scan("&code1.",i) ne '');
        aaa=scan("&code1.",i);
        call symput("code2",aaa);
        %put &code2;
WARNING: 没有解析符号引用 CODE2。
&code2
8        put aaa;
9    end;
10
11   run;

A1
B2
C3
D4

再一次运行时输出:
   %let code1=A1,B2,C3,D4;             /*每次的分段数量在变化。*/
   data _null_;
   do i=1 by 1 while(scan("&code1.",i) ne '');
       aaa=scan("&code1.",i);
       call symput("code2",aaa);
       %put &code2;
D4
       put aaa;
   end;

   run;

A1
B2
C3
D4
%put &code2;只看见最后一段的值D4了。请问大师们错误在哪里,该如何纠正?


二维码

扫码加我 拉你入群

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

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

全部回复
2020-12-17 13:09:54
call symput("code2",aaa);尚未生成code2的时候就进行了解析,所以首次会报错,第二次运行code2是等于第一次的最后一次的。。
二维码

扫码加我 拉你入群

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

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

2020-12-17 14:39:27
孤单的我们 发表于 2020-12-17 13:09
call symput("code2",aaa);尚未生成code2的时候就进行了解析,所以首次会报错,第二次运行code2是等于第一 ...
感谢您的回答。请问应该如何才能实现期望的输出呢?
二维码

扫码加我 拉你入群

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

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

2020-12-18 14:16:18
直接宏级别的处理,%put %scan(&code1.,&n.)
二维码

扫码加我 拉你入群

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

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

2020-12-22 09:57:27
jg.sas 发表于 2020-12-18 14:16
直接宏级别的处理,%put %scan(&code1.,&n.)
感谢您的回答。我去试试。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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