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