Die YEAR-TO-YYYY-Funktion wandelt eine 2-stellige Jahreszahl in eine 4-stellige Jahreszahl um. Das Ende des 100-Jahr Intervalls, in welches das in argument-1 angegebene Jahr fällt, wird bestimmt, indem argument-2 zum aktuellen Jahr (das Jahr, in dem die Funktion ausgeführt wird) addiert wird („gleitendes Fenster“).
Funktionstyp: ganzzahlig.
Format
FUNCTION
YEAR-TO-YYYY
(argument-1 [argument-2])
Argumente
argument-1 muss eine positive ganze Zahl kleiner als 100 sein.
argument-2, wenn angegeben, muss eine ganze Zahl sein.
Falls argument-2 nicht angegeben ist, wird als zweites Argument der Wert 50 angenommen.
Die Summe aus dem aktuellen Jahr und argument-2 muss kleiner als 10000 und größer als 1699 sein.
Returnwerte
Der Returnwert ist die in argument-1 angegebene Jahreszahl ergänzt durch das Jahrhundert.
Der Returnwert ist abhängig vom ZwischenwertL1L2L3L4 = aktuelles Jahr +argument-2 (= letztes Jahr des 100-Jahr Intervalls).
Das Jahrhundert wird folgendermaßen berechnet:100 * L1L2 + JJ
100 * (L1L2 -1) + JJfalls L3L4 >= JJ
falls L3L4 < JJ(JJ=argument-1)
Der Fehler-Returnwert ist 0.
Siehe auch: DATE-TO-YYYYMMDD, DAY-TO-YYYYDDD
Beispiel 9-49
... DATA DIVISION. WORKING-STORAGE SECTION. 01 DATUM PIC 9(7). 01 AKTUELLES-JAHR PIC 9(7). 01 JAHR PIC 9(7). PROCEDURE DIVISION. P1 SECTION. MAIN. * * Berechnung der Funktion mit gleitendem Fenster: * * Das 100-Jahr Intervall, in das das berechnete Jahr fällt, soll * die Jahre (aktuelles Jahr -35) bis (aktuelles Jahr +64) umfassen: * COMPUTE DATUM = FUNCTION YEAR-TO-YYYY (59 64). DISPLAY DATUM UPON T. (1) * * Ohne 2. Argument (bzw. 2. Argument =50) * Das 100-Jahr Intervall umfasst die Jahre (aktuelles Jahr -49) * bis (aktuelles Jahr +50): * COMPUTE DATUM = FUNCTION YEAR-TO-YYYY (0). DISPLAY DATUM UPON T. (2) * * Das 2. Argument kann auch negativ sein * Das 100-Jahr Intervall umfasst die Jahre (aktuelles Jahr -109) * bis (aktuelles Jahr -10): * COMPUTE DATUM = FUNCTION YEAR-TO-YYYY (96 -10). DISPLAY DATUM UPON T. (3) * * Berechnung der Funktion mit festem Fenster * * Das 100-Jahr Intervall, in das das berechnete Jahr fällt, soll * die Jahre 1950 bis 2049 umfassen: * * Berechnung des letzten Jahres des 100-Jahr Intervalls * relativ zum aktuellen Jahr * MOVE FUNCTION CURRENT-DATE(1:4) TO AKTUELLES-JAHR. COMPUTE JAHR = 2049 - AKTUELLES-JAHR. * Berechnung der Funktionswerte COMPUTE DATUM = FUNCTION YEAR-TO-YYYY (50 JAHR). DISPLAY DATUM UPON T. (4) COMPUTE DATUM = FUNCTION YEAR-TO-YYYY (1 JAHR). DISPLAY DATUM UPON T. (5) * Das 100-Jahr Intervall, in das das berechnete Jahr fällt, soll * die Jahre 1890 bis 1989 umfassen: * * Berechnung des letzten Jahres des 100-Jahr Intervalls * relativ zum aktuellen Jahr * MOVE FUNCTION CURRENT-DATE(1:4) TO AKTUELLES-JAHR. COMPUTE JAHR = 1989 - AKTUELLES-JAHR. * Berechnung der Funktionswerte COMPUTE DATUM = FUNCTION YEAR-TO-YYYY (89 JAHR). DISPLAY DATUM UPON T. (6) COMPUTE DATUM = FUNCTION YEAR-TO-YYYY (90 JAHR). DISPLAY DATUM UPON T. (7) STOP RUN.
Ergebnis:
Im Jahr 1996 liefert das Programm folgende Ergebnisse:
(1) 2059
(2) 2000
(3) 1896
(4) 1950
(5) 2001
(6) 1989
(7) 1890
Im Jahr 2050 liefert das Programm folgende Ergebnisse:
(1) 2059
(2) 2100
(3) 1996
(4) 1950
(5) 2001
(6) 1989
(7) 1890