It is quite easy to identify if a given Year is a Leap Year or not using COBOL intrinsic functions. To be a Leap Year, the Year should be divisible by 4 and not divisible by 100. If divisible by 100, then it should also be divisible by 400.
The following code is present in the Screenshot above.
01 WS-YEAR PIC 9(04).
EVALUATE TRUE
WHEN FUNCTION MOD (WS-YEAR 4) NOT ZERO
WHEN FUNCTION MOD (WS-YEAR 100) ZERO
AND FUNCTION MOD (WS-YEAR 400) NOT ZERO
DISPLAY 'IT IS NOT A LEAP YEAR ' WS-YEAR
WHEN OTHER
DISPLAY 'IT IS A LEAP YEAR ' WS-YEAR
END-EVALUATE.
Another way of identifying is by converting it to Gregorian Date as given below.
The following code is present in the Screenshot above.
01 WS-JULIAN-DATE.
05 WS-JULIAN-YR PIC 9(04).
05 WS-JULIAN-DDD PIC 9(03) VALUE 060.
01 WS-JULIAN-DATE-R REDEFINES WS-JULIAN-DATE PIC 9(07).
01 WS-GREGORIAN-DATE PIC 9(08).
05 WS-GREGORIAN-DATE-R REDEFINES WS-GREGORIAN-DATE.
10 WS-GREGORIAN-YR PIC 9(04).
10 WS-GREGORIAN-MM PIC 9(02).
10 WS-GREGORIAN-DD PIC 9(02).
01 WS-YEAR PIC 9(04).
MOVE WS-YEAR TO WS-JULIAN-YR.
COMPUTE WS-GREGORIAN-DATE = FUNCTION DATE-OF-INTEGER
(FUNCTION INTEGER-OF-DAY
(WS-JULIAN-DATE-R)).
IF WS-GREGORIAN-MM = 02
DISPLAY 'IT IS A LEAP YEAR ' WS-YEAR
ELSE
DISPLAY 'IT IS NOT A LEAP YEAR ' WS-YEAR
END-IF.
01 WS-YEAR PIC 9(04).
EVALUATE TRUE
WHEN FUNCTION MOD (WS-YEAR 4) NOT ZERO
WHEN FUNCTION MOD (WS-YEAR 100) ZERO
AND FUNCTION MOD (WS-YEAR 400) NOT ZERO
DISPLAY 'IT IS NOT A LEAP YEAR ' WS-YEAR
WHEN OTHER
DISPLAY 'IT IS A LEAP YEAR ' WS-YEAR
END-EVALUATE.
Another way of identifying is by converting it to Gregorian Date as given below.
The following code is present in the Screenshot above.
01 WS-JULIAN-DATE.
05 WS-JULIAN-YR PIC 9(04).
05 WS-JULIAN-DDD PIC 9(03) VALUE 060.
01 WS-JULIAN-DATE-R REDEFINES WS-JULIAN-DATE PIC 9(07).
01 WS-GREGORIAN-DATE PIC 9(08).
05 WS-GREGORIAN-DATE-R REDEFINES WS-GREGORIAN-DATE.
10 WS-GREGORIAN-YR PIC 9(04).
10 WS-GREGORIAN-MM PIC 9(02).
10 WS-GREGORIAN-DD PIC 9(02).
01 WS-YEAR PIC 9(04).
MOVE WS-YEAR TO WS-JULIAN-YR.
COMPUTE WS-GREGORIAN-DATE = FUNCTION DATE-OF-INTEGER
(FUNCTION INTEGER-OF-DAY
(WS-JULIAN-DATE-R)).
IF WS-GREGORIAN-MM = 02
DISPLAY 'IT IS A LEAP YEAR ' WS-YEAR
ELSE
DISPLAY 'IT IS NOT A LEAP YEAR ' WS-YEAR
END-IF.