楼主: larry_dh
3109 0

[学习分享] length语句作用于2种不同变量类型时的区别 [推广有奖]

  • 0关注
  • 2粉丝

已卖:41份资源

硕士生

94%

还不是VIP/贵宾

-

威望
0
论坛币
367 个
通用积分
0
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
3253 点
帖子
178
精华
0
在线时间
181 小时
注册时间
2013-3-2
最后登录
2016-7-5

楼主
larry_dh 发表于 2014-4-26 15:38:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

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

使用一下代码做测试:

  1. data work.test1;                                                                                                                        
  2. length city $20;                                                                                                                        
  3. length y 5;                                                                                                                           
  4. city = 'Paris';                                                                                                                        
  5. city2 = trim(city);                                                                                                                    
  6. city3="paris";                                                                                                                        
  7. x=3; y=4;                                                                                                                              
  8. run;                                                                                                                                   
  9. proc contents data=test1; run;                                                                                                         
  10.                               
复制代码
结果: 2.JPG 变量city、y的长度由第一次出现的状态(此处为length语句)决定,长度分别为20,5;在本例中,由于trim函数返回值的变量city2没有预先定义长度,变量的长度就由参数city的长度决定,即20;city3首次出现长度5,x长度默认8;

下面再看看,2个length语句后出现时的情况:

  1. data work.test1;                                                                                                                        
  2.   city = 'Paris';                                                                                                                       
  3.   city2 = trim(city);                                                                                                                  
  4.   city3="paris";                                                                                                                        
  5.   x=3;                                                                                                                                 
  6.   y=4;                                                                                                                                 
  7. length city $20;                                                                                                                        
  8. length y 5;                                                                                                                             
  9. run;                                                                                                                                    
  10. proc contents data=test1; run;   
复制代码
结果: 1.JPG 变量的长度由其首次出现的状态决定,字符变量city、city2,city3都是5,后出现的length语句无效,这符合官方教材关于length语句的说明;数值变量x为默认长度8,而数值变量Y的长度为5,后出现的length语句是有效的;

可见:

1)对于字符变量,后出现的length对其无效,而数值变量是有效的;当然如果length语句先出现(先出现当然是第一次的状态啦),则其对字符变量和数值变量的作用都有效;


       另,NOTE:使用赋值语句给变量赋值时,要特别注意变量的长度可能由初值决定,此时后续的赋值可能出现值长度的删减(Truncated)!

    很简单的谈一谈刚才在复习base时的发现,自己第一次发现,哈 大神勿鄙视。


二维码

扫码加我 拉你入群

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

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

关键词:length 变量类型 leng eng truncated

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 15:46