D* Variables de travail
D Wrkdt1 s 8 0
D Wrkdt2 s 8 0
D Wdatj s 8 0
D Wdtiso s d
D DateTS S Z
D WHeure_Limite S T
* Découpage heure limite
D DS
D WHeure_Depart 1 6 0
D Whdep 1 2 0
D Wmdep 3 4 0
D Wsdep 5 6 0 inz(00)
*
* Calcul de la date limite. On alimente le TimeStamp
* Avec la date d’expédition, et ensuite on peut faire
* la manipulation de durée.
C Eval DateTs = %timestamp(%date(rtdtex:*iso))
C + %hours(rthdep) + %minutes(rtmdep)
C*
C Eval DateTs = DateTS - %days(trdimj)
C -%hours(trdimh) - %minutes(trdimm)
C* Date Limite => on fait un %subst sur le TimeStamp
C Eval RTDLIM = %DEC(%subst(%CHAR(DateTs :*iso0)
C :1:8):8:0)
C* Heure limite => on fait un %subst sur le TimeStamp
C Eval RTHLIM = %DEC(%subst(%CHAR(DateTs :*iso0)
C :9:4):4:0)
*
* Pour le calcul d’une heure limite lorsque l’on a seulement une
* zone heure et une zone minute.
C Eval Whdep = rthdep_dufichier
C Eval Wmdep = rtmdep_dufichier
C Eval WHeure_Limite = %time(WHeure_depart:*hms)
C - %hours(trdimh) - %minutes(trdimm)
C Eval RTHLIM = %DEC(%subst(%CHAR(WHeure_Limite:
C *iso0):1:4):4:0)
*
C* Date du jour
C Eval Wdatj = %dec(%char(%date():*iso0):8:0)
*
C* Transformation dates début est fin
C Eval Wdtiso = %date(%dec(p$dex1:6:0):*dmy)
C Eval Wrkdt1 = %dec(%char(Wdtiso:*iso0):8:0)
C*
C Eval Wdtiso = %date(%dec(p$dex2:6:0):*dmy)
C Eval Wrkdt2 = %dec(%char(Wdtiso:*iso0):8:0)
*===================================================================================
H option(*nodebugio)
D @charA S 8 inz('04/12/01')
D @charB S 10 inz('12/02/2004')
D @charC S 8 inz('12/03/04')
D @dateA S d inz(D'2004-12-04')
Bien reprendre le INZ c'est lui qui défini la date comme ISO
D @numA S 6 0 inz(041205)
D @numB S 7 0 inz(1041206)
D @numC S 8 0 inz(20041207)
D @numD S 6 0 inz(120804)
D @numE S 8 0 inz(12092004)
/free
// character to character...
@charB = %char(%date(@charA:*ymd/):*usa/); // 'yy/mm/dd' to 'mm/dd/ccyy'
@charC = %char(%date(@charA:*ymd/):*mdy/); // 'yy/mm/dd' to 'mm/dd/yy'
@charA = %char(%date(@charB:*usa/):*ymd/); // 'mm/dd/ccyy' to 'yy/mm/dd'
@charC = %char(%date(@charB:*usa/):*mdy/); // 'mm/dd/ccyy' to 'mm/dd/yy'
@charA = %char(%date(@charC:*mdy/):*ymd/); // 'mm/dd/yy' to 'yy/mm/dd'
@charB = %char(%date(@charC:*mdy/):*usa/); // 'mm/dd/yy' to 'mm/dd/ccyy'
// character to date...
@dateA = %date(@charA:*ymd/); // 'yy/mm/dd' to D'ccyy-mm-dd'
@dateA = %date(@charB:*usa/); // 'mm/dd/ccyy' to D'ccyy-mm-dd'
@dateA = %date(@charC:*mdy/); // 'mm/dd/yy' to D'ccyy-mm-dd'
// character to numeric...
@numA = %dec(%char(%date(@charA:*ymd/):*ymd0):6:0); // 'yy/mm/dd' to yymmdd
@numB = %dec(%char(%date(@charA:*ymd/):*cymd0):7:0); // 'yy/mm/dd' to cyymmdd
@numC = %dec(%char(%date(@charA:*ymd/):*iso0):7:0); // 'yy/mm/dd' to ccyymmdd
@numD = %dec(%char(%date(@charA:*ymd/):*mdy0):7:0); // 'yy/mm/dd' to mmddyy
@numE = %dec(%char(%date(@charA:*ymd/):*usa0):7:0); // 'yy/mm/dd' to mmddyyyy
@numA = %dec(%char(%date(@charB:*usa/):*ymd0):6:0); // 'mm/dd/ccyy' to yymmdd
@numB = %dec(%char(%date(@charB:*usa/):*cymd0):7:0); // 'mm/dd/ccyy' to cyymmdd
@numC = %dec(%char(%date(@charB:*usa/):*iso0):7:0); // 'mm/dd/ccyy' to ccyymmdd
@numD = %dec(%char(%date(@charB:*usa/):*mdy0):7:0); // 'mm/dd/ccyy' to mmddyy
@numE = %dec(%char(%date(@charB:*usa/):*usa0):7:0); // 'mm/dd/ccyy' to mmddyyyy
@numA = %dec(%char(%date(@charC:*mdy/):*ymd0):6:0); // 'mm/dd/yy' to yymmdd
@numB = %dec(%char(%date(@charC:*mdy/):*cymd0):7:0); // 'mm/dd/yy' to cyymmdd
@numC = %dec(%char(%date(@charC:*mdy/):*iso0):7:0); // 'mm/dd/yy' to ccyymmdd
@numD = %dec(%char(%date(@charC:*mdy/):*mdy0):7:0); // 'mm/dd/yy' to mmddyy
@numE = %dec(%char(%date(@charC:*mdy/):*usa0):7:0); // 'mm/dd/yy' to mmddyyyy
// date to character...
@charA = %char(@dateA:*ymd/); // D'ccyy-mm-dd' to 'yy/mm/dd'
@charB = %char(@dateA:*usa/); // D'ccyy-mm-dd' to 'mm/dd/ccyy'
@charC = %char(@dateA:*mdy/); // D'ccyy-mm-dd' to 'mm/dd/yy'
// date to numeric...
@numA = %dec(%char(@dateA:*ymd/):6:0); // D'ccyy-mm-dd' to yymmdd
@numB = %dec(%char(@dateA:*cymd/):7:0); // D'ccyy-mm-dd' to cyymmdd
@numC = %dec(%char(@dateA:*iso-):8:0); // D'ccyy-mm-dd' to ccyymmdd
@numD = %dec(%char(@dateA:*mdy/):6:0); // D'ccyy-mm-dd' to mmddyy
@numE = %dec(%char(@dateA:*usa/):8:0); // D'ccyy-mm-dd' to mmddccyy
// numeric to character...
@charA = %char(%date(@numA:*ymd):*ymd/); // yymmdd to 'yy/mm/dd'
@charB = %char(%date(@numA:*ymd):*usa/); // yymmdd to 'mm/dd/ccyy'
@charC = %char(%date(@numA:*ymd):*mdy/); // yymmdd to 'mm/dd/yy'
@charA = %char(%date(@numB:*cymd):*ymd/); // cyymmdd to 'yy/mm/dd'
@charB = %char(%date(@numB:*cymd):*usa/); // cyymmdd to 'mm/dd/ccyy'
@charC = %char(%date(@numB:*cymd):*mdy/); // cyymmdd to 'mm/dd/yy'
@charA = %char(%date(@numC:*iso):*ymd/); // D'ccyy-mm-dd' to 'yy/mm/dd'
@charB = %char(%date(@numC:*iso):*usa/); // D'ccyy-mm-dd' to 'mm/dd/ccyy'
@charC = %char(%date(@numC:*iso):*mdy/); // D'ccyy-mm-dd' to 'mm/dd/yy'
@charA = %char(%date(@numD:*mdy):*ymd/); // mmddyy to 'yy/mm/dd'
@charB = %char(%date(@numD:*mdy):*usa/); // mmddyy to 'mm/dd/ccyy'
@charC = %char(%date(@numD:*mdy):*mdy/); // mmddyy to 'mm/dd/yy'
@charA = %char(%date(@numE:*usa):*ymd/); // mmddccyy to 'yy/mm/dd'
@charB = %char(%date(@numE:*usa):*usa/); // mmddccyy to 'mm/dd/ccyy'
@charC = %char(%date(@numE:*usa):*mdy/); // mmddccyy to 'mm/dd/yy'
// numeric to date...
@dateA = %date(@numA:*ymd); // yymmdd to D'ccyy-mm-dd'
@dateA = %date(@numB:*cymd); // cyymmdd to D'ccyy-mm-dd'
@dateA = %date(@numC:*iso); // ccyymmdd' to D'ccyy-mm-dd'
@dateA = %date(@numD:*mdy); // mmddyy to D'ccyy-mm-dd'
@dateA = %date(@numE:*usa); // mmddccyy to D'ccyy-mm-dd'
// numeric to numeric...
@numB = %dec(%char(%date(@numA:*ymd):*cymd0):7:0); // yymmdd to cyymmdd
@numC = %dec(%char(%date(@numA:*ymd):*iso0):8:0); // yymmdd to ccyymmdd
@numD = %dec(%char(%date(@numA:*ymd):*mdy0):6:0); // yymmdd to mmddyy
@numE = %dec(%char(%date(@numA:*ymd):*usa0):8:0); // yymmdd to mmddccyy
@numA = %dec(%char(%date(@numB:*cymd):*ymd0):6:0); // cyymmdd to yymmdd
@numC = %dec(%char(%date(@numB:*cymd):*iso0):8:0); // cyymmdd to ccyymmdd
@numD = %dec(%char(%date(@numB:*cymd):*mdy0):6:0); // cyymmdd to mmddyy
@numE = %dec(%char(%date(@numB:*cymd):*usa0):8:0); // cyymmdd to mmddccyy
@numA = %dec(%char(%date(@numC:*iso):*ymd0):6:0); // ccyymmdd to yymmdd
@numB = %dec(%char(%date(@numC:*iso):*cymd0):7:0); // ccyymmdd to cyymmdd
@numD = %dec(%char(%date(@numC:*iso):*mdy0):6:0); // ccyymmdd to mmddyy
@numE = %dec(%char(%date(@numC:*iso):*usa0):8:0); // ccyymmdd to mmddccyy
@numA = %dec(%char(%date(@numD:*mdy):*ymd0):6:0); // mmddyy to yymmdd
@numB = %dec(%char(%date(@numD:*mdy):*cymd0):7:0); // mmddyy to cyymmdd
@numC = %dec(%char(%date(@numD:*mdy):*iso0):8:0); // mmddyy to ccyymmdd
@numE = %dec(%char(%date(@numD:*mdy):*usa0):8:0); // mmddyy to mmddccyy
@numA = %dec(%char(%date(@numE:*usa):*ymd0):6:0); // mmddccyy to yymmdd
@numB = %dec(%char(%date(@numE:*usa):*cymd0):7:0); // mmddccyy to cyymmdd
@numC = %dec(%char(%date(@numE:*usa):*iso0):8:0); // mmddccyy to ccyymmdd
@numD = %dec(%char(%date(@numE:*usa):*mdy0):6:0); // mmddccyy to mmddyy
*inlr = *on;
/end-free
*===================================================================================
* Format *EUR car dans la zone la saisie est JJMMAAAA
H DATFMT(*EUR)
*
D myDate_Deb s d
D myDate_Fin s d
*
D Quote C Const(x'7d')
*
* Date paramètre au format JJMMAAA
C *ENTRY PLIST
C PARM PDATD 8
C PARM PDATF 8
* Controle zone alpha est numérique
C If Pdatd <> *Blanks
C If %check('0123456789' : Pdatd) > 0
C Eval Indicateur erreur = *ON
C Else
*Si zone numérique => Tester la date avec %Date
C Monitor
C Eval myDate_Deb = %Date(%Dec(pdatd:8:0):*EUR)
C On-Error
C Eval Indicateur_Erreur = *ON
C Return
C EndMon
C Endif
C Endif
* Faire identique pour date de fin pour le controle suivant
* Si date de début renseignée, vérifier si inférieur ou
* égale à date de fin
C If myDate_Deb > myDate_Fin
C Eval Indicateur erreur = *ON
C Endif