SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

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

data步操作

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-10-13 11:07:35 | 只看该作者

data步操作

DATE_D=ifc(substr(repair_time,9,6)>"&M_TIMEDLM",put(input(substr(repair_time,1,8),?? yymmdd10.)+1,yymmddn8.),substr(repair_time,1,8));
哪位高手能告诉我,这个语句的作用和结果,谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-10-13 13:15:15 | 只看该作者

Re: data步操作

overview:
截取repair_time的非日期字符,与宏变量m_timedlm进行比较;如大于则将repair_time的日期部分加1后赋给字符变量date_d,否则直接将日期部分赋给date_d
details:
1 repair_time: 疑似一包含日期的字符串(日期格式为YYYYMMDD,在字符串的前8位)
    1.1 substr(repair_time,9,6):从第9个字符开始,取6个字符,用于与宏变量比较
    1.2 substr(repair_time,1,8):从第1个字符开始,取8个字符,即取出日期的字符串
        1.2.1 put(input(variable,informat.),format.):将日期部分转为数值,再转回字符
2 &m_timedlm: 宏变量,值为一字符串
3 ifc()函数改写成if语句为:
    if repair_time的非日期字符(9-14位) > &m_timedlm then
        date_d=从repair_time取出的日期+1 ;/*日期加1*/
    else date_d=从repair_time取出的日期; /*日期不变*/
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-10-13 15:34:06 | 只看该作者

Re: data步操作

谢谢hopewell大哥的帮助
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-3 22:04 , Processed in 0.066370 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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