首先,肯定的是:字符型变量的类型和长度决定于编译阶段且由其第一次出现时的状态所决定的,即SAS构建PDV时给该变量的长度,之后该长度属性不能再变;数值型变量默认存储长度为8个字节;
使用一下代码做测试:
结果:

变量city、y的长度由第一次出现的状态(此处为length语句)决定,长度分别为20,5;在本例中,由于trim函数返回值的变量city2没有预先定义长度,变量的长度就由参数city的长度决定,即20;city3首次出现长度5,x长度默认8;
下面再看看,2个length语句后出现时的情况:
结果:

变量的长度由其首次出现的状态决定,字符变量city、city2,city3都是5,后出现的length语句无效,这符合官方教材关于length语句的说明;数值变量x为默认长度8,而数值变量Y的长度为5,后出现的length语句是有效的;
可见:
1)对于字符变量,后出现的length对其无效,而数值变量是有效的;当然如果length语句先出现(先出现当然是第一次的状态啦),则其对字符变量和数值变量的作用都有效;
另,NOTE:使用赋值语句给变量赋值时,要特别注意变量的长度可能由初值决定,此时后续的赋值可能出现值长度的删减(Truncated)!
很简单的谈一谈刚才在复习base时的发现,自己第一次发现,哈 大神勿鄙视。