For nylig fik jeg brug for at finde ud af, hvilket ugenummer en dato tilhørte. Jeg tænkte straks, at det er der garanteret en funktion i REXX, der kan fortælle mig. For en gangs skyld skuffede REXX mig. REXX har ellers funktioner til lidt af hvert, men ugenumre kan det ikke klare endnu.
Så måtte jeg jo til at lave en funktion selv. Først måtte jeg jo lige sætte mig ind i, hvordan et ugenummer rent faktisk er defineret. En af definitionerne (for der er flere) er, at den første uge i et nyt år med en torsdag i er uge 1. Så er det jo bare et spørgsmål om at tælle torsdage. Her er, hvad jeg fik kodet:
Det centrale er selvfølgelig funktionen week. For at demonstrere den har jeg indlejret den i et REXX program, der som input tager en dato på DB2-format (YYYY-MM-DD). Jeg "fusker" denne dato om til formatet YYYYMMDD vha. translate for at REXX bedre kan behandle den. Selve week-funktionen tager altså en dato på formatet YYYYMMDD som input.
Det spændende er selvfølgelig en første uge, hvor der ikke er nogen torsdag i (0101 er en fredag, en lørdag eller en søndag). Så er jeg nødt til at finde ud af, hvad ugenummer den sidste uge i det foregående år har. Det gøres selvfølgelig lettest ved at kalde week funktionen rekursivt (jeg elsker rekursive løsninger) med det foregående års sidste dag.
Hvis du undrer dig over