SAS中文论坛

标题: data步操作 [打印本页]

作者: shiyiming    时间: 2010-10-13 11:07
标题: 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));
哪位高手能告诉我,这个语句的作用和结果,谢谢!
作者: shiyiming    时间: 2010-10-13 13: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取出的日期; /*日期不变*/
作者: shiyiming    时间: 2010-10-13 15:34
标题: Re: data步操作
谢谢hopewell大哥的帮助




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2