The following Y2K material has been kept available by MITRE for historical purposes only and has not been updated unless noted.
MITRE - Y2K - Compiler Solutions
Draft of Compiler Solution for Informing Year 2000 Project Managers
Research Into Using Specialized Compilers to Obtain Year 2000 Compliance
THE PURPOSE OF THIS SUMMARY IS TO RAISE AWARENESS OF POSSIBLE FUTURE ACTION AND RECOMMENDATIONS FOR CREATIVE MODIFICATIONS OF EXISTING TOOLS FOR SYSTEMS NOT CURRENTLY ACTIVELY SUPPORTED.
An IBM Millennium Language Extensions solution that is similar for COBOL and PL/I compilers is described on the IBM website.
AN INVESTIGATION OF SIMILAR SOLUTIONS FOR LANGUAGES WITH LESS VENDOR SUPPORT CURRENTLY IS DESCRIBED HERE.
Overview MITRE has worked on overall system engineering strategies for analyzing, assessing, and repairing Year 2000 (Y2K) problems for more than a year. This paper describes recent experiments at the MITRE Corporation and their results to date, and has a detailed discussion of compiler extensions.
There are a number of similarities to standard maintenance and migration models that apply to fixing local domain-specific problems like Y2K. Effective Y2K solutions often start with sophisticated analysis tools. However, today's commercially available tools for analyzing and solving the Y2K problems are not automatic. Y2K problems that current analysis techniques miss arise because of lack of knowledge of design, bad design, missing code, faulty software maintenance processes, homonyms, aliasing, and imperfect analysis tools. These are sometimes called false negatives.
False positives, on the other hand, are that part of potential problem areas tools spew out that indicate more than what needs fixing. Some false positives arise because tool vendors wish to identify every possible problem area without missing a single one. There is no model for automatically filtering the possible leads down to the minimum required. It requires manual (human) analysis.
Current research at MITRE is looking into several ways of reducing the false negative and false positive problems that arise while attempting to discover Y2K problems in firmware and software. Our strategy is to modify existing tools.
Conclusions We organized a study of standard development practices (Section 3) providing compiler support for tailored date libraries. We emphasized examples of current state of the art development tools and techniques by doing the following:
Programming date operations to perform conversion and comparison;
Showing operations as functions available via included libraries;
Showing how the libraries can be set up with the gcc (GNU C) compiler on various platforms as needed;
Demonstrating how to predefine and layer operations as a tutorial with a working demo using the GNAT (GNU Ada) compiler; and
Using compiler directives such as pragmas to prototype built-in operations and date formats.
Fixing date calculations in legacy (pre-object-oriented) languages requires these solutions. Testing also can have similar problems and can use these techniques. These solutions also have important connections with current reengineering research and show how current toolsets can be a part of the solution for Y2K-like problems (domain specific areas). We hope to be able to influence vendors and programs to think of these kinds of tools as incrementally modifiable.
Recommendations Legacy programs should be encouraged to direct efforts towards making the most of existing maintenance development tools and techniques and addressing the issues of incrementally adjusting the state of the art software maintenance process to achieve effective results without affecting reliability.
Effectively Use Existing Tools Encourage vendors to upgrade the tools to support domain-specific code-level reengineering and reuse (as has to be done under schedule and resource pressures for Y2K solutions). In particular, further encourage vendors, by referring to our results if necessary, to help users see how to:
Make use of tool and library enhancement using well understood techniques as described in the full paper;
Reorganize existing date library code to adapt existing library routines for different formats;
Solve these problems with existing tools which normally do not require consulting and on-site support, but could benefit from having such assistance and support when they are used to address Y2K problems, by
Developing Bridging Conversions
For each target language, provide a bridging conversion for date data types which would support conversions of common application specific date formats to and from an internal date format.
Develop interface support for message handling applications using these conversions, with dates converted at input to standard forms and then manipulated using compiler-supported common library operations.
Provide output conversions for bridging to existing message formats.
and Controlling the Variability of System Building
Facilitate viewing each existing solution as consistent within some set of distributed system communication assumptions and message formats, and then support operating within the those constraints.
Agree fairly quickly on what the operation and attribute semantics should be for particular systems and toolsets.
Extend code generation to support date specific operations in the style of I/O or other common library facilities.
For further information directly related to these issues, please contact Year2000@mitre.org