SinkyQ 发表于 2017-5-2 01:11 
那这样其实是不是可以等同于Length语句决定了下一句,下一句又会影响它下一句,所以其实Length是决定了所 ...
倒不是说length决定了所有,只不过它最先出现就占住了坑,长度定义就是这样,谁先来谁说了算。届时关于长度的考点你还会在70题和考试中看到无数变形。
比如先length var 20; 再读数据集a中的同名var, 那么该var长度是20。
但是调个个,先有set a; 再定义length var 20,这时候var的长度就由数据集里原有长度决定了。
回到这一题,其实最可恨的是即使调用了字符函数对字符做了修改,但特么的该字符变量的长度还是由源字符串决定。
所以如果length str1 20;
str2 = substr(str1, 2, 1);
即使你的str2只是想取str1的一个字作为子字符集,那本能的认为当然是str2只拿一个字符出来,所以自然长度为1喽,然而不是!str2长度仍然是20!跟其他字符拼接时后面会补上19个空格!!
(然而的然而:如果此时你去打印str2,出来的结果又是一个字符,我认为这是sas的一个bug,总之这里很混乱)
因为又是占坑原则决定,该变量在赋值时由先出现的源字符决定了长度,而不管字符函数作出了怎样的修改,坑那个爹啊~
幸亏我没在正式考试中遇上这样的题,不然很抓狂。