Errors introduced by the programmer fall into all of the categories listed above. Because programmers are a creative lot and programming languages are so flexible there is no way for the software auditing tools to find all the potential errors they may have created. As the data being manipulated becomes less and less obviously date related it becomes more and more difficult to automatically detect date-related errors. Many systems provide functions and data types specifically intended to perform date storage and manipulation. Note that many programming environments, such as Maple, return date information without modification from the operating system.
Maple can return the current date directly from the operating system.
If the OS does not return a year 2000 compliant date the program can fail despite being developed in a year 2000 compliant environment. Date-like values Where a programmer uses values that are not explicitly dates but whose values are based on or evaluated like dates things are even more complicated. While not explicitly a date, the sequence and arithmetic semantics are in many cases the same for term values as for a two-digit year date. To find these sorts of problems it is necessary to find not just where dates are returned from functions, but to trace the use of all information derived from those dates. Because date-like values are not obviously dates they are much more difficult to find in a program, nor will automated auditing tools be likely to find such problems.