设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3288|回复: 0

SAS 常量(SAS Constants)

[复制链接]

4

主题

47

金钱

72

积分

新手用户

发表于 2018-9-28 10:50:47 | 显示全部楼层 |阅读模式

常量也称常数,是指其值固定不变的数字或者字符串,SAS 常量有以下几种类型:


  • 字符型常量(也称为文本)
  • 数值型常量(也称为数字)
  • 时间日期型常量
  • 位检测型常量

1、字符型常量(Character Constants)

字符型常量即一系列字符串,引用时一般用单引号(‘ ’)括起来。例如,下面的语句中Tom 是一个字符型常量,

  1. IF name=‘Tom' THEN DO;
复制代码

如果字符型常量中含有单引号,则要用双引号括起来。例如Tom’s 是一个字符型常量,则其使用格式为name=“Tom’s”,也可以写成name=‘Tom’’s’。同理,如果字符型常量中间有一个双引号,则写成name= “Tom””s”的格式。

字符型常量区分大小写,例如,‘Tom’和‘tom’是两个不同的常量。字符型常量拖尾的空格被忽略,而前缀的空格是该字符型常量的一部分,例如,‘Tom ’=‘Tom’为真,‘ Tom’=‘Tom’为假。

字符型常量也有十六进制形式,十六进制字符型常量用单引号括起来的一串偶数个十六进制数后跟一个X 来表示,单引号内不能出现空格。例如,字符型常量‘Tom’转换为其十六进制的形式($hex8.)为'546F6D2020202020'X,也可以在这串字符的偶数位加逗号使其更易读,但逗号并不是这个常量的一部分,例如下面的语句,

  1. IF name=‘546F,6D20,2020,2020'X THEN DO;
复制代码

2、数值型常量(Numeric Constants)

数值型常量在SAS 中有标准、科学记数法和十六进制三种形式。

标准形式就是平常使用的十进制数字形式,可以有小数点和正负号。例如,十进制数-5.2在SAS 中用标准形式也记为-5.2。

科学记数法形式是一个1 与10 之间的实数(尾数)与一个10 的幂的积,用E 表示10 的幂。例如,SAS 中科学记数法形式的常数-0.5E-2,其涵义是-0.5×10-2,即十进制数的-0.005。

SAS 中的十六进制数值型常量和平常使用的十六进制数形式略有不同,需要在它们的后面加一个X,如果这个数的第一位数不是数字而是字母,还需要在它的前面加一个0。例如,十进制数9 用SAS 的十六位进制形式表示就是9X,十进制数10 用SAS 的十六位进制形式表示就是0AX。

3、时间、日期、时间日期型常量(Date,Time,and Datetime Constants)

在SAS 中使用时间、日期、时间日期型常量时,需要用单引号或双引号将一般形式的时间日期括起来,并在其后加D 表示日期常数,加T 表示时间常数,加DT 表示时间日期常数。

时间日期型常量有以下几种形式:

(1)用‘ddmmm<yy>yy’D 或‘ddmmm<yy>yy’D 表示日期值,例如,

  1. <p style="line-height: 30px; text-indent: 2em;">date=‘1jan2006'd;</p><p style="line-height: 30px; text-indent: 2em;">date=‘01jan04'd;</p>
复制代码

(2)用‘hh:mm<:ss.ss>’T或"hh:mm<:ss.s>"T表示时间值,例如,

  1. <p style="line-height: 30px; text-indent: 2em;">time=‘9:25’t;</p><p style="line-height: 30px; text-indent: 2em;">time=‘9:25:19pm't;</p>
复制代码

(3)用’ddmmm<yy>yy:hh:mm<:ss.s>’DT或"ddmmm<yy>yy:hh:mm<:ss.s>"DT表示时间日期值,例如,

  1. <p style="line-height: 30px; text-indent: 2em;">dtime=‘01may04:9:30:00'dt;</p><p style="line-height: 30px; text-indent: 2em;">dtime=‘18jan2003:9:27:05am'dt;</p>
复制代码

SAS 以浮点数字形式储存时间日期值。SAS 中的日期值,是某一天距离1960 年1 月1 日的天数,比此更早的日期是负数,比此晚的日期是正数。例如,1960 年1 月2 日在SAS 中日期储存值为2;SAS 中时间值是某一时间距离这个时间当天凌晨零点的秒数。例如,这时时间值2 是指当天00:02(0 点0 分2 秒);SAS 的时间日期值是某一时间点距离1960 年1 月1 日0 点0 分0 秒的秒数,例如‘1JAN1960:0:0:8’DT 在SAS 中的储存值为8。

SAS 可以读取2 位数字和4 位数字的年份数,当读2 位数字的年份数时,有时需要使用‘YEARCUTOFF=’系统选项来指定2 位数字的年份数属于哪一个百年范围。例如,设置YEARCUTOFF=1920 时,这时所有的2 位年份数都在1920 至2020 这个范围,2 位年份数78 年指1978 年,2 位年份数11 年指2011 年。SAS V8 中‘YEARCUTOFF=’选项的默认值为1920。

4、位检测常量(Bit Testing Constants)

位检测是用位掩码比较一个值的内部值,数值和字符都可以进行位检测。位掩码的形式是用引号括起来的一串0、1 和点(.),跟随一个字母B,0 检测相应的位是否为off,1 检测相应的位是否为on,点(.)则忽略这一位。当检测一个字符值时,SAS 将掩码与这个字符最左边的位数对齐,依次从左至右进行检测;当检测一个数字时,这个数由浮点数被截成32 位整数,SAS 将掩码与这个数的最右边位数对齐进行检测。例如,下面的语句用位检测常量’..1.0000’b 检测a 的字符型值:

  1. IF a=‘..1.0000'b THEN DO;
复制代码

如果a 的值从左数第3 位字节是on,并且第5 到8 位是off,则IF 语句后的表达式结果为真;如果不符合,则表达式结果为假。

注意:被检测对象的字节数不能大于掩码位数,如果检测对象的字节数大于掩码位数,SAS 会根据掩码位数截取被检测对象,则可能得到错误的比较结果;被检测对象的字节数小于掩码位数时,SAS 根据检测对象的性质从左或从右按位数依次检测,并在日志窗口显示一条警告信息。

本帖被以下淘专辑推荐:

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

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