%let lenx=40;
%let string=notfunc (abc);
%let string2=%qsysfunc(substrn(&string,1,&lenx));
程序错误。
关于如何解决这个问题,我个人认为,很可能无解。
错误的原因:’notfunc (abc)’ 很可能被当成方程解析。比如,如果 %let string=notfunc* (abc); 错误不再出现。因为此时的&string很明显不是方程定义的形式。
如果利用substr(),这个错误并不存在。在某种情况下,substrn(x,1,k)==substr(x,1,min(k,length(x))when k >0. 也就是说,substrn()很可能自身对函数的输入做出估计,然后进行运算。还是substrn()设计的缺陷。但是令人费解的是%let string=2 (abc); 仍然导致错误。
请教过我SAS补习班的老师,也没有给出很好的答案。也认为无有好的办法。
大家的看法如何?如何解决这个问题呢?真的是没有解决方法吗?
京剧