全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3492 5
2009-07-28
如下宏test:

%macro test ;

  %global len ;
  %let str = English ;
%let len = %sysfunc( length( "&str" ) ) ;

%mend ;

为什么执行该宏时len的值是9而不是7呢?另外length函数参数写成为"&str,则提示存在错误。

有哪位大侠能够介绍下SAS Macro处理的原理、机制,或者能够提供详细的说明文档。谢谢!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2009-7-28 14:42:51
%let len = %sysfunc( length( &str ) ) ;即可,否则两个双引号也算长度了
二维码

扫码加我 拉你入群

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

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

2009-7-28 15:18:34
二楼完全正确,
二维码

扫码加我 拉你入群

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

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

2009-7-28 16:06:41
楼上的意思SAS将"&str"中的成对双引号看成了字符串的一部分处理了?为什么将length的参数设定为"&str,则提示错误呢?谁能解释下sas macro facility解析时是如何处理引号的?

Thanks!!!
二维码

扫码加我 拉你入群

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

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

2009-7-29 21:00:18
%macro test ;

  %global len ;
  %let str = English ;
%let len = %sysfunc( length( %str(%"&str) )) ;

%mend ;
options mprint mlogic symbolgen;
%test
;
%put &len;
二维码

扫码加我 拉你入群

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

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

2009-7-29 21:29:47
macro不是都当成string来处理嘛,你加了2个引号相当于长度从7变成了9吧~
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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