Wednesday, 3 January 2018

%DIFF Example

      *
      * Description :·%Diff() Example
      *
      * Syntex      :
      *
      * %Diff(Date/Time expression : Date/Time expression : unit)
      *
      * Function    :·Return Difference between date/time given in specified unit
      *==========================================================
      *
     D Diff            S              5I 0
     D Date1           S               D

     C
      /Free
        //-------------------------------------------------------
        // For Date
        //=======================================================

          Diff = %Diff(D'2010-02-01' : D'2010-01-01' : *Days) ;
          Dsply %Char(Diff) ;                                            //  31

          Diff = %Diff(D'2010-01-01' : D'2010-02-01' : *Days) ;
          Dsply %Char(Diff) ;                                            // -31

          Diff = %Diff(D'2010-01-01' : D'2010-02-01' : *Months) ;
          Dsply %Char(Diff) ;                                            //  -1

          Diff = %Diff(D'2012-01-01' : D'2010-01-01' : *Years) ;
          Dsply %Char(Diff) ;                                            //   2

          // Date - TimeStamp
          Diff = %Diff(D'2010-01-01' : Z'2010-01-01-09.00.00' : *Years) ;
          Dsply %Char(Diff) ;                                            //   0

        //-------------------------------------------------------
        // For Time
        //=======================================================

          Diff = %Diff(T'10.00.00' : T'09.00.00' : *Hours) ;
          Dsply %Char(Diff) ;                                            //  1

          Diff = %Diff(T'10.00.00' : T'09.00.00' : *Minutes) ;
          Dsply %Char(Diff) ;                                            //  60

          Diff = %Diff(T'10.00.00' : T'09.00.00' : *Seconds) ;
          Dsply %Char(Diff) ;                                            //  3600

          // Time - TimeStamp
          Diff = %Diff(T'10.00.00' : Z'2010-01-01-08.00.00' : *Hours) ;
          Dsply %Char(Diff) ;                                            //   2

        //-------------------------------------------------------
        // For TimeStamp
        //-------------------------------------------------------

          Diff = %Diff(Z'2010-03-03-10.00.00.000200' :
                       Z'2010-03-03-10.00.00.000100' :
                       *MSeconds) ;
          Dsply %Char(Diff) ;                                            //  100

        //-------------------------------------------------------
        // %Diff as Duration
        //-------------------------------------------------------

          Date1 = %Date() +
                 %Diff(D'2012-11-11' : D'2011-10-10' : *Days) ;

          Dsply Date1 ;                  // Some Date

      /End-Free
     C                   SetOn                                        LR

No comments:

Post a Comment