Retrouve nouvelle date calculée (format libre)

BoTTom |
     H datfmt(*ISO)
 
     Ddatrecue         S              8  0
     Ddatretour        S              8  0
     Dwdate            S               D
     DNBmois           S              2  0
     DNBjour           S              3  0
     Djour             S              2  0
     Dfindemois        S               n
 
 
     C     *entry        plist
     C                   parm                    datrecue
     C                   parm                    datretour
     C                   parm                    NBmois
     C                   parm                    NBjour
     C                   parm                    findemois
      /free
 
         // *ISO = yyyymmdd sans séparateur (numérique)
         wdate = %DATE(datrecue:*ISO) + %MONTHS(NBmois) + %DAYS(NBjour) ;
 
 
 
       if        findemois ;
 
         // soit le 26 mars 1998
         // --------------------
         // ajoutons 1 mois      ==> 26 Avril
         // isolons le jour      ==> 26
         //  retranchons 26 jours ==> 31 mars (26 jours avant le 26 Avril)
         //
 
          wdate = wdate + %MONTHS(1)    ;
          wdate = wdate - %DAYS( %SUBDT(wdate:*DAYS) )    ;
 
        endif                            ;
 
 
        datretour = %dec( wdate : *ISO) ;
        *inlr = *on ;
 
      /end-free
 





©AF400