En af de svære discipliner i ethvert progammeringssprog er beregning af nye datoer ud fra en given dato. Så vidt jeg husker har COBOL og PLI for længst opgivet. Hvis du kan komme i kontakt med DB2, så er der masser af muligheder, men det kræver et kald til DB2. Her for nylig havde jeg brug for lidt dato aritmetik i REXX. Det har jeg før benyttet mig af til beregning af ugenumre. Jeg kan dog konstatere, at jeg har skøjtet let henover netop den del at tippet, så det fortjener en uddybning.
Den centrale funktion for datoer i REXX er selvfølgelig DATE. Og når det gælder dato aritmetik, så skal du bruge parameteren 'B' for Base date, som i DATE('B'). Dette vil returnere en numerisk værdi for det antal dage, der er gået siden den 1. januar år 1 frem til i dag. Udtrykket DATE('B', '20170101', 'S') vil returnere antallet af dage for den 1. januar 2017. DATE('B') - DATE('B', '20170101') vil altså returnere antal dage, det er gået siden den 1. januar 2017.
Vil du finde ud af, hvilken dato det er om syv dage (en uge) på formatet YYYYMMDD, så kan du bruge udtrykket DATE('S', DATE('B') + 7, 'B'). Lidt mere avanceret, men ikke meget er datoen 28 dage før den 15. maj 2017, som findes med udtrykket DATE('S', DATE('B', '20170515', 'S') - 28, 'B'). Der er desværre intet udtryk, der vil bringe dig sikkert og præcist et antal måneder eller år frem eller tilbage. Her er DB2 stadig eneste mulighed, hvis du vil slippe for at kode det selv.