Verification and Remediation ProcessNext

Chapter 1: Introduction

SmartFind Plus, provides a complete environment and range of tools for analyzing applications, investigating the Year 2000 problem, verifying remediated (fixed) code and fixing code.

SmartFind Plus works on an application's source code. The code is examined for lines that could have an effect on the Year 2000 problem. These are copied from the source code and placed into the worksheet. In the worksheet the lines of code are known as points of interest (POIs). You have to then decide if they are POIs and require any change.

Verifying remediated code is a process of checking code that has been fixed. You are checking to see if the code will handle the Year 2000 properly. It involves examining the remediated code using the Analysis Tools, the worksheet and Revolve. After you have collected all the POIs in the worksheet, you can flag them with categories other than those given by the tools, to indicate their compliance status; fixed correctly, incorrectly fixed, needs investigation, etc.

Fixing code requires the same process for finding the relevant lines of code in the source code. After these have been found and categorized, you can generate an automatic fix using SmartFix.

After any fixes have been applied, the code must be tested using appropriate software.

1.1 What is the Year 2000 Problem?

The Year 2000 problem is that programs refer to the year by only the last two digits. In the simplest case, the year 2002 takes the value 02, and when you compare 02 with 98, it appears to be 96 years earlier, and not 4 years after it, as intended.

There are two main methods for fixing year dates:

SmartFind Plus can be used for data expansion and windowing. As well as identifying the statements that can be fixed using windowing logic, SmartFind Plus also identifies the parts of the application that require data expansion, such as keyed I-O and internal sorts.

1.2 SmartFind Plus Features

SmartFind Plus provides a series of features that help you to; verify the validity of any fixes to source code, or to fix the code. The product includes:

1.3 Analysis Tools

SmartFind Plus provides a series of analysis tools to search for POIs in the project source code. Some of the analysis tools find data items in the source code to add them to the worksheet as POIs. Other analysis tools extract code from the worksheet enabling you to refine the POIs in the worksheet. The end result should be a worksheet where every point of interest is categorized for verification or fix purposes.

Some of the tools produce sets of POIs, based on attributes, such as the candidate's name, its type, its value, its usage and so on. These are displayed in a set view window. The code displayed in the set has been added to the worksheet, but is also available in the set view for further analysis. The set view enables you to union, intersect or subtract the code set with code in other sets. Sets can be added to or subtracted from the worksheet and code in the worksheet can be selected to create sets.

The analysis tools can be combined as an automated composite tool process, and they can be customized to suit your particular analysis requirements. You can also share individual tools and composite tools with others in your project group.

1.4 SmartFind Wizard

The SmartFind Wizard searches the source code for candidates, that could be POIs by using a set of criteria and rules. It pinpoints only the statements where a date data item might cause a logic problem. The SmartFind Wizard is available with its default settings as an analysis tool or can be used as a configurable wizard from the Year 2000 menu.

Operations that might cause a logic problem are comparisons, input/output of indexed files, sorting, subtraction, and various others. An expression containing two-digit year data items instead of four-digit year data items is evaluated incorrectly only when it compares date data items or does an arithmetic calculation involving date data items. Logic problems might also occur when two-digit year data items are used for sorting or as the object of a key field or index field. You can customize these search criteria.


Note: SmartFind Wizard ignores any statements that do not contain relevant date code even if they do contain date data items. For example, it ignores MOVE statements and statements that display dates in reports or on screens.


The Candidate Wizard finds the POIs in two passes, it:

  1. Builds a list of potentially date-related elements, based on the size and type of data items, some specific literals, and some other criteria. These potentially date-related elements form the list of POIs.

  2. Examines the statements where each point of interest is used, and reduces the list to only those statements containing suspect operations, such as comparisons and subtractions. It also filters out other items that are not of interest, such as data items formatted for display using PIC ...V... for a decimal point.

1.5 The Worksheet

The worksheet is the central point for Year 2000 work. The worksheet holds the information needed to verify or fix statements. It also keeps track of what is of interest, what has been fixed and the decisions made.

The worksheet lists the POIs, such as data items, statements and data files. It shows, for example, the type and size of each data item and defines the year type allocated to it, as well as who allocated the year type and when. The statement tab displays the source, its line number, the status of the fix, such as whether it is automatically generated or supplied manually, and any verification status.

Throughout the SmartFind Plus process of investigating, fixing and verifying Year 2000 problems, your work is centered on the worksheet.

In the worksheet you:

1.6 SmartFix

SmartFix determines the fix and then modifies your source to handle the century correctly. For each suspect operation, SmartFix inserts code that determines the century of the data items that represent years. These data items are expanded to include the century before performing the suspect operation, and where necessary the results are contracted back afterwards.

For example, a simple comparison between two two-digit years, yy1 and yy2:

	IF yy1 > yy2

becomes a comparison between two four-digit years, ccyy1 and ccyy2, that each includes the century:

    move yy1 to ccyy1         
    if ccyy1 > 50             *> determine century for yy1
        add 1900 to ccyy1     *> expand yy1 into ccyy1
    else 
        add 2000 to ccyy1 
    end-if 

    move yy2 to ccyy2 
    if ccyy2 > 50             *> determine century for yy2
        add 1900 to ccyy2     *> expand yy2 into ccyy2
    else 
        add 2000 to ccyy2 
    end-if 

    if ccyy1 > ccyy2          *> compare the expanded data items 

SmartFix fixes basic date problems, such as simple conditions and arithmetic, automatically. For more complex situations, SmartFix indicates why there might be a problem and provides information on how to fix it manually.

1.7 Revolve Database

The central component of Revolve is a project database containing a complete representation of an application's source code. The database represents not only the content of your application but also its structure. This enables Revolve to carry out many advanced functions that are not possible from a simple text representation.

The database can handle many different types of source code, including COBOL, JCL, BMS and so on. When you load the source into the database, it is parsed, checking for inconsistencies, missing files, misnamed components and so on.

Once the database is loaded, subsequent analyses and inquiries to Revolve work on the database using the inherent knowledge of the structure of your application. This makes for faster and more efficient searching. In addition, when you need to work on the actual source files, you can display them in context and amend them if required.

1.8 Language Extension

Revolve supplements its base COBOL and JCL support with specific language extensions for Assembler, PL/I, and Unisys systems. These extensions enable you to apply Revolve's powerful application inventory, analysis, and maintenance capabilities to enterprise systems written in other languages.

Each extension provides a language parser that identifies individual components of an application system, such as programs, copy or include files, variables, job steps, data files and so on. The parser then adds these components to the Revolve project database.

The following language extensions are available:

Each extension can be a separately installed component of Revolve. It shares the same operating system and microprocessor requirements as Revolve. An additional 2 Mb free hard disk space is needed to load all corresponding files.


Copyright © 1999 MERANT International Limited. All rights reserved.
This document and the proprietary marks and names used herein are protected by international law.
Verification and Remediation ProcessNext