Programmers working on the year 2000 problem need to locate and understand
date sensitive code, that is, code whose execution depends on date inputs.
This paper presents several dynamic analysis methods for addressing this pr
oblem. Date sensitive code can be located by running many test cases that a
re identical except for a change in one date value. An advanced test covera
ge tool can recover each test's execution count vector giving the number of
times that each basic block was executed. Comparison of the vectors reveal
s the blocks whose execution is affected by the input date values. We prese
nt several methods of analysing the execution count data to locate date alg
orithms. One method identifies subdomains, that is, ranges of dates that ar
e processed similarly,. Another method involves graphical or Fourier analys
is to identify common programming patterns such as leap-year computations.
The last method exploits the 28-year regularity in dates to look for anomal
ies in processing. The methods are illustrated using Bellcore's ATAC testin
g tool on five C programs that use some of the date encodings that year 200
0 maintainers may need to locate and understand. Copyright (C) 1999 John Wi
ley & Sons, Ltd.