楼主: caibirdcnb
1817 6

[原创博文] 请问高手如何拆分宏变量,非常感谢! [推广有奖]

  • 0关注
  • 37粉丝

讲师

47%

还不是VIP/贵宾

-

威望
0
论坛币
1367 个
通用积分
16.5538
学术水平
67 点
热心指数
70 点
信用等级
64 点
经验
6762 点
帖子
206
精华
2
在线时间
433 小时
注册时间
2011-8-31
最后登录
2023-9-23

楼主
caibirdcnb 发表于 2012-8-20 18:45:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
例1,
%let str=%str(A,B,C);
希望根据上面语句得到以下几个宏变量:
str1=A;
str2=B;
str3=C;
str=A_B_C;
等式左边是宏变量名称,右边是内容。

例2,
%let str=%str(A B C D);
希望根据上面语句得到以下几个宏变量:
str1=A;
str2=B;
str3=C;
str4=D;
str=A_B_C_D;
等式左边是宏变量名称,右边是内容。

请高手指教,非常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:非常感谢 let 如何

沙发
ntsean 发表于 2012-8-20 20:43:14
%let str1=%scan(&str,1);
%let str2=%scan(&str,2);
%let str3=%scan(&str,3);
%let str=&str1._&str2._&str3;

藤椅
YueweiLiu 发表于 2012-8-20 22:47:00
最后一步,可以使用一些替换函数,如 translate
  1. %let nstr=%sysfunc(translate(&str.,%str(_),%str( )));
复制代码


板凳
caibirdcnb 发表于 2012-8-21 09:17:53
非常感谢楼上两位,但问题是A,B,C,D...的个数不是固定的,所以判断个数和循环是无法避免的,请继续指导,谢谢!

报纸
bobguy 发表于 2012-8-21 11:15:53
https://bbs.pinggu.org/thread-699918-1-1.html

The link contains everything you needed.

地板
caibirdcnb 发表于 2012-8-26 11:36:14
buboy,非常感谢,在程序中找到灵感实现了:)

7
haku_x300 发表于 2012-9-4 11:37:30
options MLOGIC MPrint;
%macro splitvars(instr, delim);
%let nub=%sysfunc(countw(&instr, &delim));
%do i=1 %to &nub;
    %global STR&i;
        %let STR&i=%scan(&instr,&i, &delim);
%end;
%global STR;
%LET STR=%sysfunc(translate(&instr,'_',&delim));
%mend splitvars;

%splitvars(&str, ',')

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 21:09