SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 495|回复: 2
打印 上一主题 下一主题

这段程序为什么总想不明白?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-3-30 13:32:08 | 只看该作者

这段程序为什么总想不明白?

[code:8185e]
data work.areacodes;
   phonenumber = 3125551212;
   code = '('!!substr(phonenumber,1,3)!!')';
run;
[/code:8185e]
我总觉得结果应该是(312)。为什么会是(  3)
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2006-3-30 14:00:17 | 只看该作者

to maurice

好问题,看来你看PROG2的教材很仔细!
这是因为phonenumber=3125551212本来是数字型,现在被用在substr(phonenumber,1,3)里就自动转换成字符型。之前没有定义过长度,所以默认就是phonenumber的format的长度,phonenumber的默认format是BEST12.,所以就是12位,于是'3125551212'被填在12为的字符中,而且是规定是右对齐,这样就成了'  3125551212'。substr(phonenumber,1,3)自然就成了'  3'。
[code:375f8]code = '('!!substr(compress(phonenumber),1,3)!!')';[/code:375f8]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2006-3-30 17:20:31 | 只看该作者

to shiyiming

谢谢指点
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-9 23:58 , Processed in 0.141473 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表