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
 
|