RPG: Avoid deprecated date and time values

In RPG, several date and time variables use 2 digit years, which will break date math in 2039, similar to Y2K for other operating systems. Essentially, any 2 digit year greater than 40 is interpreted as the 1900s, any 2 digit year less than or equal to 39 is interpreted as the 2000s. IBM has recommended moving away from system variables such as UYEAR and UDATE in favor of *YEAR and *DATE. More information on this can be found on their recommended avoidance guidelines. This mentions how to warn on a compiler level, but older code that has not been recompiled recently would still be at risk of causing issues and having a rule that runs over the entire codebase would help avoid these issues.
Examples of non-compliant code:

dcl-s year int(2);
year = UYEAR;
dcl-s runDate char(6);
runDate = UDATE;
dcl-s orderDate date(*MDY);
dcl-s timeValue zoned(12);
timeValue = TIME;

Examples of compliant code:

dcl-s year int(4);
year = *YEAR;
dcl-s runDate date(*ISO);
runDate = *DATE;
dcl-s orderDate date(*ISO);
orderDate = %date();
dcl-s timeValue time;
timeValue = %time();

There may be false positives for this, as some generated reports use 2 digit years for display, not for any math operations. In addition, some programs may require 2 digit years as a parameter for similar reasons.

Type: Code Smell