Previous SmartFind Wizard Creating Projects Next

Chapter 16: Revolve/2000

This chapter describes Revolve/2000 and how it finds and helps remediate, using the data expansion technique, the Year 2000 data items in an application . Revolve/2000 is not suitable for use in verifying an application.

16.1 Introduction

Revolve/2000 is designed as an aid for a data expansion solution to the year 2000 problem.

Revolve/2000 finds the data items that represent dates in an application, by examining their names. For example, a data item with the word DATE in the name is captured. The date data items are then built into a candidate list.

After you have built the candidate list, there are a variety of ways to display and manipulate it, and to report on your findings. In addition there are tools for fixing the source code, such as the PIC Expander and the Modification Driver.

16.1.1 Process for Revolve/2000

The basic process for finding and fixing the date-related points in your application is:

  1. Creating a Revolve project comprising the sources

    Before investigating an application, you need to locate all the application's components. This will be not only program source and copy books, but can include file definitions, screen layouts, job control, etc. You create a project and load the source files into the Revolve database. Revolve will note any missing components, which you then need to locate and load into the database.

  2. Build a candidate list

    The candidate list contains all the potentially date-related points in the application. You build the candidate list using the Candidate Wizard in the Revolve/2000 window.

    Tracing through the code to find other data items that are potentially dates due to their association with the candidates already found. For example, where a statement refers to two data items, one of which is known to be a potential date, the other data item might equally be a date. This is the Impact Analysis process.

    Building the candidate list takes time. The time taken depends on a number of factors, but most significant is the number of lines of code being examined for candidates. If building the list takes too long, consider breaking your application into smaller projects, of about 200,000 lines of code, and building those smaller projects.

  3. Examine the candidate list

    You can display it in different ways and display the source code corresponding to each candidate in a split screen window.

  4. Refine the candidate list

    You refine the candidate list by filtering it to see different sets of candidates, and then removing unwanted candidates. Ultimately, the candidate list contains all the genuinely date-related points of interest.

    Filtering the candidate list to remove unwanted data items, such as those with names that you know are not dates. If, for example, the candidate list contains all data items with names containing DATE, you might want to filter out all the data items with UPDATE in their names.

  5. Fixing data items

    To fix the problem, you expand the PICTURE clauses of the date-related data items to allow for 4-digit years. You need to be aware of, and fix, any data items that are used for other non-year purposes, where they might be relying on being truncated to two digits. You also need to convert any data files to their expanded form.

  6. Compiling and testing

    Now compile and test the application using your preferred development tool.

    If you want to go back and use Revolve/2000 on the edited source, you need to reload the edited source files into the database, since Revolve works on the database representation of the project, not the source files themselves.

16.2 Build a Candidate List

You use the Candidate Wizard to build the candidate list based on a range of attributes of the candidates, such as:

You can now use Display Filters to filter out unwanted candidates.

16.2.1 Finding Data Items Based on their Names

When you build a candidate list, you can search for data items based on their names. You can specify the exact names of data items or partial names. For example, you can search for all data items with DATE anywhere in the name by specifying *DATE*, where * represents a match with any character and any number of them, and where the name is not case specific.

After building the candidate list, you can also make exceptions to the name criteria. For example, you might want to exclude *UPDATE, even though you included all data item names with *DATE*. You do this by filtering out the unwanted items.

In addition, you can expand the candidate list to view all the statements where each data item is used. You can filter out data items that you are not interested in, such as data items declared as 88-level conditionals with ALL clauses.

Note that if you give the full name of a data item to include it in the candidate list, it stays in the list regardless of any filters you set.

16.2.2 Finding Text in Non-COBOL Components

When building the candidate list, you can include date-related text strings in text components of your project. Text components are unparsed source code, such as non-COBOL programs, that are loaded into the database as part of your project. For example, the following text line is found as matching the text string *DATE*:

today-date = "Nov 5, 2006"

In the same way as specifying data items by name, you specify the text strings you want when you build the candidate list.

16.3 Display the Candidate List

Having built the candidate list, you can manipulate it in a number of ways to examine its contents. You can reorganize the list on different bases, such as by data item or by program. You can also access the source code directly from the candidate list, by splitting the screen.

The candidate list is displayed in hierarchical folders, which you can open and close by double-clicking the folders or clicking the buttons

The top-level folders represent the candidate category that you choose. Each folder might represent a data item, and when you open the folder, you see the lines of code where that data item is used. Alternatively, each folder might represent a program, and when you open the folder you see all the program's candidate data items, each in their own folders, which you can open to see the relevant lines of code. For more on these display hierarchies, see the section Refining the Candidate List.

16.3.1 Details Shown in the Candidate List

The candidate list gives details on each candidate. Most of the columns give data item-specific detail, although the source program or copybook is shown for all candidates, where it is known.

Use Status Bar to turn on and off the status line at the top, which shows how many matches there are. The number of matches corresponds to the type of candidates you are displaying. For example, it might show the number of programs that contain candidates, or the number of candidate data items.

The detail shown for each candidate covers:

16.3.2 Match Flags and Their Meaning

A data item's match flags indicate the criteria and filters that the data item matches. On the one hand, they show why the data item was included in the list, by showing which of the wizard's criteria it matches. On the other hand, the match flags show which data items you can filter out of the list, by virtue of their matching the currently specified filters.

Match Flag
Reason the candidate is in the list
M Exact match of the data item name, without any wildcards
N Name of the data item matched the wizard's criteria
I Data item was identified during an Impact Analysis as an impact synonym. This is a data item that references the same field as another candidate data item.
B Data item was identified during an Impact Analysis as an impact buffer. This buffer contains the impacted element at a particular offset and size.
A Data item is used in an ACCEPT ... FROM DATE statement
T The candidate matched a text string in the wizard's criteria, and is in a text component of the project

Match Flag
Filter that the data item matches
P The data item's name matches a data item name filter
8 The data item is declared as an 88-level conditional with the ALL clause
Z The size of the data item is outside the filtered size range
G The data item is group-level item for an item already included, and so is redundant
F The data item has a filtered display format, such as a decimal

16.3.3 Refining the Candidate List

You can choose how to structure the candidate list and on what basis to sort it, such as in alphabetical order of data item or program, or in order of the size of the data items. You use Display Filters to do this, and check the category of element you want to sort on.

You can sort the candidate list based on:

16.3.4 Access the Code from the Candidates

You can access the source code for the candidates directly from the candidate list, by splitting the window in two. The top part shows the candidate list with one of the candidates selected, and the bottom part shows the source code of the selected candidate. This enables you to analyze the code in more detail and to modify it directly.

Use View Source Code to display the source for the candidate you have selected in the candidate list. As you move through the candidate list, selecting different candidates, the source code keeps in step, so it always reflects the selected candidate.

Tips: Some of the useful features of the split screen editor include:

If you edit the source and want to process it again, the edited source files need to be loaded into the database, and if you are using SmartFind Plus, the new lines also need to be metered.

See the Split screen editor section in the Tools chapter.

16.4 Save the Candidate List and Criteria

You can save the candidate list at any stage, and also the criteria you used to build it. You can reload either of these later when you want to continue working on them.

As well as saving complete candidate lists separately, you can save selected candidates in a worksheet together with other candidates you have previously saved there. You then have one central point to work from for fixing, tracking status, reporting and so on. You can add to the worksheet at any time.

The following options are available:

Click this:
To do this:

Add to Worksheet
Saves the selected data items and statements in the SmartFind Plus worksheet, together with any already there. The worksheet has the .mdb extension and is automatically saved when you leave SmartFind Plus.

Save to File
Saves the candidate list to a text file, for which you can choose the filename and location. The candidate list is saved expanded or compressed to the same extent as it is currently displayed.

Save Date Research
Saves the candidate list and the criteria you used to include candidates in the list together with the filters you used for excluding candidates and the individual candidates that you removed. Also any impact information you collected from an Impact Analysis is saved. All this research is saved in a file with a .rev extension.

Save Date Criteria
Saves the criteria you used to include candidates in the candidate list, together with the filters you used for excluding candidates. The criteria is saved in a file with a .cri extension.

Load from File
Reloads the specified date research file (.rev) that you previously saved, or the specified the date criteria file (.cri) that you previously saved.

16.5 Refine the Candidate List

After building the candidate list, you examine it in detail to identify the points that are genuinely date related. You can refine the candidate list, filtering the list and removing individual candidates.

16.5.1 Find Data Items Implicated by the Procedural Code

After finding candidates that match the wizard's criteria, you can add data items that are potentially date related because the code associates them with a candidate. For example, where a statement refers to two data items, one of which is known to be a potential date, the other data item might equally be a date. Situations where this occurs include moves, conditionals, parameter passing, group definitions and so on.

To find these associated data items, use Impact Tracing, and the resulting items are added to the candidate list. See the Impact Analysis section in the Tools chapter.

Impact Analysis is an essential part of finding all the date-related items if you have found them based on their names, such as when you use Revolve/2000.

16.5.2 Filter Out Unwanted Candidates

The Display Filters enable you to filter out candidates that you don't want to see in the candidate list for now. The candidate list itself stays intact and the filtered out candidates are hidden from view, until you change the filters again.

This enables you to specify exceptions to the original criteria you used for including candidates in the list. For example, if you originally included all items with *DATE* in the name, you can make an exception of *UPDATE* by specifying it as a filter. All data items with *UPDATE* in the name are then hidden in the candidate list.

You can filter out candidates in a number of ways, according to their:

You can also use the filters to flag data items. You specify the filter details as if you wanted to filter out these items, and then you disable the relevant filter. In this case, any data item that matches a filter is shown as wanted and is also flagged with the corresponding match flag. For example, a data item that is declared as an 88-level conditional with the ALL clause is flagged with an 8 match flag. See the Match flags section for details of the flags.

Note that any data items with the M match flag are not filtered out. These are data items whose names you specified exactly without wildcards when you originally built the candidate list.

16.5.3 Display the Filtered Data Items

You can verify that the data items you filtered out really are unwanted, by clicking Display Filters, Data item filters and then Show filtered data items.

The filtered data items are each flagged according to the filter they match, in the Match flags column, with a P for a name pattern match, F for a format filter, and so on.

16.5.4 Quick Search for Candidates Using Match

You can search for individual candidates or a set of them by specifying the candidate's name or a partial name in the Match edit box. The name you specify is applied to the top-level folders in the candidate list, which could represent programs, data items, impact groups and so on, depending on how you have organized the candidate list.

16.5.5 Remove Individual Candidates

You can remove candidates that you do not want, by selecting them in the candidate list and clicking Remove from list. For example, the candidate list might include all the data item names containing DATE, but you might not want the data item named DATE-INDEX because it represents a subscript data item instead of a date field.

Any data items you remove are then considered as exceptions to the name criteria, and are added to the list of data item names to filter out. When you filter the list from now on, the data items you removed stay filtered out, unless you change the filters. You can see the removed data items together with the filtered data items, by using Show filtered data items, from Display Filters.

Note that if you remove a data item that occurs in several programs, it is listed once for each program. If you want to remove all occurrences of the data item, you need to select the data item in all the programs. Otherwise, you select just the occurrences you want to remove.

16.6 Fix Dates

When you have found the points in the code that cause a year 2000 problem, you can use the following tools to fix the code and help while working on the year 2000 problem:

16.6.1 PIC Expander for Fixing Date Problems

The PIC Expander automates the expansion of data item PICTURE clauses for date data expansion. This tool is suitable for implementing the data expansion method of year 2000 conversion.

To use the PIC Expander, you select one or more data items in the candidate list and click PIC Expander. Figure 16-1 shows an example PIC Expander window.



Figure 16-1: PIC Expander

The PIC Expander uses a table of PICTURE translations and replaces the PICTURE clauses of the selected data items with the corresponding PICTURE clauses in the table. You can set up the translation table either before or while you are using the PIC Expander.

As well as stepping through each data item individually, you can globally replace all the selected data items. If a data item doesn't have a translation in the table, the PIC Expander stops so that you can provide one or skip on to the next and continue globally replacing.

See the Help for details, by looking up PIC Expander in the index.

Note that the PIC Expander does not work with the SPF editor.

16.7 Reports in Revolve/2000

At any stage in your year 2000 analysis, you can produce reports on the project's current status.

Click Reports to list the various reports and report data files you can produce for the current project. These fall into the following categories:

See the section Generating Text Reports for more details.

See the section Displaying Exported Data for more details.

See the Mainframe Express help for how to import these files into Workbench/2000.

16.8 Generate Text Reports

You can generate a number of text reports using Revolve/2000. These are detailed below.

16.8.1 Date Assessment Report

This report indicates the overall impact of a Year 2000 conversion process. It is useful for calculating the complexity and scope of the problem as it applies to a specific application and set of date data items.

16.8.2 Implementation Estimation Report

This report is useful for estimating the complexity of a project and the programmer hours that will be necessary for reviewing and making modifications. Estimations are based on your inputs:

The number of changes to be made is the sum of date definitions and logical usages. This is divided by the number of impacts per programmer hour that you have specified to give the modification effort for a 100% structured program. Also taken into account is the complexity of the program, based on the McCabe metric for program structure. Basically, there is an inverse relationship between percent structuredness and effort so a 50% structured program has its effort multiplied by 2, a 25% structured program has its effort multiplied by 4 and so on. Effort for testing is calculated using the modification effort and the test to modify ratio that you have entered.

Once your input is complete, three reports are generated.

The first report displays the implementation estimations.

The second portion of the report, the program exception list, generates a list of programs not impacted at all or impacted only through copybooks.

The third portion of the report, the import impact list, identifies copybooks that are impacted either in the Data Division or Procedural Division.

16.8.3 Export Data Fields to Spreadsheet/Database

Running this report generates a list, which can be imported into spreadsheets or other tools, of all the elements contained in a project. For each element the report lists:

16.9 Display Exported Data

The points of interest reports and the metering reports are exported as plain text files with comma-delimited information, rather than formatted files for printing. This enables you to import these reports into any third-party reporting tool that can interpret comma-delimited files. This tool can then use the imported data to populate a template or skeleton report and the resulting report can be tailored, viewed or printed in whatever way(s) the tool allows.

We supply aids for handling the reports in specific tools. These report handlers set up the headings, the columns and so on, and also provide buttons or macros or some device for displaying the various reports.

We provide default database skeletons and template reports for the following commonly used third-party reporting tools:

plus a default data source that you can use with ODBC-enabled applications.

These default example files are provided to get you started and are suitable for use with one project. If you have more than one project, you should copy the default templates and tailor them for each project.

You can also view the exported data files in a text editor, such as Notepad.

16.9.1 Excel - Display Reports

For Microsoft Excel, we supply two spreadsheets, research.xls for the points of interest reports, and metering.xls for the two metering reports. These spreadsheets are available by default in the directory \sfplus\revolve\reports\excel.

These spreadsheets contain macros which, when you click a button, load the report data and display the report properly formatted.

The macros expect the exported comma-delimited data files to have the default filenames and to be in the same directory as the spreadsheets. (You can edit the macros to use different names and locations, see the on-line help file for details on how to do this.)

To display the report data for a project, we recommend you take the following steps:

  1. Copy the spreadsheet research.xls to the project directory. (If you have more than one project, make another copy of the spreadsheet in that project directory too.) Copy the spreadsheet metering.xls to the directory containing the metering control file.

  2. Now you can export the report data using the default names and locations. In this way, the point of interest data is stored in the project directory and the metering report data is stored in the same directory as the metering control file.

  3. Start Excel and open the copy of research.xls that you put into the project directory.

  4. Display the formatted report data by pressing the appropriate button.

16.9.2 Access - Display Reports

For Microsoft Access, we supply an Access database, sf2000.mdb, containing a number of predefined macros that make it easy for you to import your year 2000 data into an Access table and then to use that table to generate a formatted report.

The database is installed, by default, in the directory \sfplus\revolve\reports\msaccess but before you can use it to import data or generate a report, you must have exported the report data by running the appropriate point of interest or metering report.

Once you have exported your year 2000 data, start Access and open the sf2000.mdb database to display the dialog shown below:

sshort descr
Figure 16-2: Access Reports Dialog

From here you can import your year 2000 data into an Access table by checking Import File (under Actions) and then selecting the appropriate Data Source. The table below shows, for each data source, the export report file that the data is imported from (the default names of these files are given) and the Access table that the data is imported into:

Data Source
Export Report File
Access Table
Program Detail moddetl.dat PgmDetail
Program Summary module.dat Programs
Project Summary project.dat Project
Source Summary srcfile.dat Source
Metering Report factory.rpt Metering Control
Metering Transactions factory.aud Metering Transactions

Once you have selected a data source you will be prompted to select the file that the data is to be imported from:

sshort descr
Figure 16-3: Select an Export Report File

Select the appropriate export report file to import the data into the Access table.

Once you have imported the data into the Access table you can create a report by checking Run Report and selecting the appropriate Data Source.

You can combine these basic functions by checking Import File and Run Report before you select your data source.

For example, suppose you want to create a Program Detail Report (this shows for each program in a project, the program name, the name of each suspect data item, the line number in the program that the data item occurs on and why it is suspect). To do this:

  1. Load your project, select Revolve/2000 or SmartFind Plus as appropriate and then click Reports.

  2. Select Export Points of Interest for Programs (comma-delimited) and click Execute.

  3. You can use the default filename and location (moddetl.dat in the current directory) or change them, as you prefer. Once you have specified a filename and location, the data is exported to that file.

  4. Start Access and load the sf2000.mdb database.

  5. Check the actions Import File and Run Report and then select the data source Program Detail.

  6. You will be prompted to select the correct filename and location. This imports the data from the file you have specified to the PgmDetail table and then creates and displays the report.

See the on-line help file for detailed instructions on importing data into Access and creating reports.

16.9.2.1 Over Lay Data

You can delete all the data in a table by checking Over Lay Data before you select a data source or you can overwrite the data in a table by checking Over Lay Data and Import File before you select a data source. If you select to delete data you will be prompted twice before the query is run: once to warn you that the query will delete data from the table and then to warn you how many rows of data you are about to delete. You can press OK or Cancel in response to either of these prompts. If Over Lay Data is unchecked and you import data, any new data will be added to the existing data.

16.9.2.2 Additional Reports

If you select Additional Reports the Action check boxes are ignored and it is assumed that the appropriate tables have already been loaded with data (using the Import function).

Pressing the Additional Reports button displays a list box of all the available reports (those supplied by MERANT and any that you have written yourself), for example:

sshort descr
Figure 16-4: Additional Reports

You can run a report by double-clicking on its entry in the list (or single-clicking then pressing OK). The report is run against the current contents of the Access table. The reports supplied by MERANT, and the Access table that they are run against, are as follows:

MERANT Report
Access Table
PgmDetail PgmDetail
Metering Control Metering Control
Metering Transactions Metering Transactions
Programs Programs
Project Project
Source Source
Line Report PgmDetail and Source
Program/Reason PgmDetail
Reason/Source PgmDetail

Reports are displayed in the standard Access preview report window from which you can either print or discard them.

You can run as many reports as you like in one session. When you have finished, press Close to return to the main dialog.

16.9.3 Crystal Reports - Display Reports

For Crystal Reports, we supply one report template for each report. By default, these are available in the directory sfplus\revolve\reports\crw:

The templates contain the layout information for the reports, so that they display the reports properly formatted. To display one of the reports, you open the required template in Crystal Reports, and the report is displayed as designed.

As well as the layout information, the templates also contain predefined information on filenames and locations. The templates expect:

To display the report data for a project, we recommend you take the following steps:

  1. If you haven't already done so, set up the ODBC data source SF2000 Reports, and make sure that it points to the directory containing your exported report data.

  2. If you haven't already done so, copy the ODBC file schema.ini to the directory containing your exported report data.

  3. Notice that the location of the Crystal Reports templates does not matter, as they refer to the ODBC data source, SF2000 Reports, for their information.

If you want to export report data to a different directory (for example, when you change to another project or when you export metering reports into the same directory as the metering control file), you will need to change the ODBC data source to point to the new directory, the directory containing the exported report data. You will also need to copy the schema.ini file into the new directory. See the on-line help file for details on how to do this.

16.9.4 ODBC Enabled Applications - Display Reports

You can use any ODBC-enabled application to display your report data if you have set up an appropriate ODBC data source.


Note: We can only give a very brief overview here of the steps required to set up an ODBC-enabled application. If you are not familiar with ODBC, you should consult your ODBC documentation for further details.


As a very brief outline, you are dealing with these components:

So, in summary, you have to:

  1. Add the ODBC data source, SF2000 Reports, to the list of data sources that are available on your PC and that use the Microsoft Text Driver. You do this only once.

  2. Decide where to export your report data, which is by default your project directory. Copy schema.ini to your report data directory. You need one copy of schema.ini for every report data directory you use.

  3. Update the ODBC data source to point to the report data directory you are currently using. You need to do this every time you want to use the report data in another directory.

See your on-line help file for detailed instructions on how to do these things.


Copyright © 1999 MERANT International Limited. All rights reserved.
This document and the proprietary marks and names used herein are protected by international law.
Previous SmartFind Wizard Creating Projects Next