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   |