如何在RPGLE中获得当年第一个月的第一天

时间:2017-12-06 13:37:24

标签: rpgle

dcl -s今天的日期inz(* Sys)是当前的系统日期  我如何以这种格式(2017/01/01)获得当年第一个月的第一天

2 个答案:

答案 0 :(得分:1)

您可能需要查看the %SUBST built-in function

date = d'1999-02-17';
time = t'01.23.45';
timestamp = z'1999-02-17-01.23.45.98765';

num = %subdt(date:*YEARS);
// num = 1999

num = %subdt(time:*MN);
// num = 23

答案 1 :(得分:1)

这是一个光滑的技巧:

   dcl-proc BuildDate;
     dcl-pi *n date;
       pyear     int(5) const;
       pmonth    int(5) const;
       pday      int(5) const;
     end-pi;

     dcl-ds *n;
       dateds   date(*iso) inz(d'0001-01-01');
       year     zoned(4:0) pos(1);
       month    zoned(2:0) pos(6);
       day      zoned(2:0) pos(9);
     end-ds;

     year = pyear;
     month = pmonth;
     day = pday;

     test(e) dateds;
     if %error;
       reset dateds;
     endif;

     return dateds;
   end-proc;

现在,您需要做的就是在Day Month和Year中构建一个有效的日期:

FirstDOY = BuildDate(%subdt(%date(): *Y): 1: 1);