MAPPER Y2K Success Stories - A Personal View
The author returns to worldwide "chemical coatings" Valspar to undertake the high-risk, labor-intensive process of implementing their Year 2000 MAPPER and COBOL Y2K Renovation Project. His firsthand account provides a roadmap for Year 2000 compliance, from assessment and identification to renovation and testing.
When Steve Clark of the Kaufman Group Inc. (KGI), asked me to be the MAPPER Y2KProject Manager for the Minneapolis office, I had mixed emotions. On the one hand, thefirst customer to be Y2K Renovated and Unit Tested was Valspar Corporation, a worldwide"chemical coatings" company headquartered in Minneapolis, Minnesota. Prior, Ihad worked at Valspar for almost five years and was no stranger to their systems andMAPPER techniques. On the other hand, I knew little about the different techniquesavailable for solving the Y2K problem. I had thought about the problem somewhat, and feltthat the best way to solve it was to expand all the date fields in the database into aCCYYMMDD format. However, I also knew that it was a lengthy, labor-intensive processfilled with high risk. Also, while on long car trips I allowed my mind to wander in afield of various other approaches and solutions. But, none of them ever came to a mentalsolution, either because the trip was over or because I knew I would probably never beengaged in Y2K work.
The MAPPER Y2K Enhancements
I officially started the Valspar MAPPER and COBOL Y2K Renovation Project on November 1,1997. The first two weeks were taken up with getting ready, including becoming familiarwith Quick-MAP2000. Quick-MAP2000 is KGI's solution to making MAPPER applicationsY2K-compliant. The master design for the Quick-MAP2000 process was a vision of KGIfounder, Ron Kaufman. His purpose of Quick-MAP2000 was to give the MAPPER community whathe believed to be a much better alternative to the other MAPPER Y2K products and servicescurrently being offered.
Also during this same timeframe, UNISYS Corporation's MAPPER Engineering group was busydesigning a "best" approach for a suite of new MAPPER function options thatwould be easy to use and fast to implement. KGI knew that to be successful in the marketplace, it had to incorporate UNISYS' approach in its solution.
UNISYS' MAPPER Y2K effort consisted of the introduction of the "Y"option/parameter for the @SOR, @SRR, @SRH, @SRU, @MCH, @MAU, @FND, @FDR and @BFNfunctions. The enhancements were documented and released as a patch to Level 39R1A for2200 MAPPER, Level 5.3.3 for NT, Level 5R3C for All UNIX-based MAPPER systems and Level2.1 for MAPPER System for Windows (MSW). MAPPER Y2K employs a 100-year windowingtechnique, starting on January 1, 1944, and ending on December 31, 2043, or, optionally,starting on January 1, 1928, and ending on December 31, 2027, for 2200 MAPPER systems
The Y2K Tool
While UNISYS MAPPER Engineering was working on providing the "Yoption/parameter" solution, Gary Erdman, KGI's Y2K project manager, was busydesigning the details of the tool set that took advantage of the new MAPPER Y2Kfunctionality. The project team's programming efforts started in June 1997 and the productwas ready by November 1997. The team agreed that in order for Quick-MAP2000 to be acomplete product, it had to also include a project management reporting tool tographically monitor the MAPPER Y2K Renovation effort, complete with charts and graphs. TheQMMANAGE module was then designed and written to take advantage of MAPPER's MicrosoftWindows interface.
Inventory Phases
The first thing I learned about the Y2K process was the terminology. The Inventory andAssessment phases for Valspar were complete. That is, using the tools withinQuick-MAP2000, a total inventory of all registered Runs in Valspar's ProductionMAPPER system was taken. All subroutines and screens referenced by these registered Runswere also inventoried and a table of Run cross-references was built. Every Run thataccesses another Run Control Report (RCR) via an @RSR, @CALL, @RPX, @STR,@SC or any lesscommon function like @CHD, @FCH and @SQL command is identified. The process is iterative.That is, if a Run RSR's to another Run which in turn RSR's to another Run, the Inventoryprocess notes the calling sequence in the cross reference table. Conversely, thecross-reference table will list every Run that calls a common subroutine. Depending on thecustomer's system size, the Inventory and Assessment phases may take up to a week.
The next step in the Inventory phase was for Valspar's System Experts toidentify every RCR that was to be Renovated and Unit Tested and those which were to beexcluded from the process. When excluding an RCR, if that RCR references a subroutine thatno "included" RCR references, that subroutine is also excluded automatically.
When new Runs are added to a MAPPER System, Quick-MAP2000 has the tools thatallow the user to add the new Runs to the cross reference tables and to the inventoryReport. If an excluded RCR is to be re-instated for Renovation, all uniquely referencedRCRs are also re-instated.
Assessment Phases
Quick-MAP2000 is designed to be as table driven as possible. The Y2K Assessmentmodule makes use of this flexibility by allowing the user to specify customer specificrenovation parameters right along with the parameters that must be scanned for during theRenovation phase. During the Assessment phase, every line of inventoried MAPPER code isscanned for any potential Y2K problem using this table. When the assessment module finds astring of characters in an RCR that matches a string of characters found inQuick-MAP2000's Y2K parameter table, it logs it in the Master Inventory Report.
The Renovation Phase
The Renovation process was designed to work within the client's existing developmentenvironment. If they already have a tool to "unlock" a production Run formaintenance, that tool is blended with the Quick-MAP2000 System. If not, theRenovation team will use the Quick-MAP2000 Renovation Environment supplied with theQuick-MAP2000 System. At no time does Renovation occur on the production RCR. Onlya copy of the RCR is renovated. After a Run is Renovated/Unit-Tested and/or System-Testedand Compliance-Tested it is put back into production. Prior to putting it back intoproduction, any changes that may have been made to the production RCR must be applied tothe Renovated RCR. All testing should be done prior to returning the Run to production.This process is closely coordinated between the Renovation team and the rest of thecustomer's application maintenance staff. Prior to starting the Renovation process, aRenovation/Unit Testing training is provided with a self-help, practice module calledQMSAMPLE.
One initial concern I had was how the analysts that were not familiar with Valspar'scoding techniques and/or business would fare. The analysts in question are all MAPPERknowledgeable Run-writers with a minimum of 14 years experience. Almost all worked eitherfor Sperry or UNISYS at one time or another. All of them have application developmentexperience in the business world outside of Sperry or UNISYS. I needn't have worried. Allof them (there are now eight Renovation team members in the Minneapolis office, four ofthem which work part-time) did very well. When there were any questions about how best toresolve an issue, I found an esprit de corps borne of excitement and genuine desireto do the best job possible. My job was relegated to providing insight to some of thetechniques used by Valspar, and then to point the personnel to the right Valspar employeesfor the answers to some questions concerning the results that were desired and why - and,of course, to managing the project.
Renovation of a MAPPER Run
From a User's perspective (the analyst's), the Quick-MAP2000 System is an easytool-set to quickly learn and use (hence the name). At the heart of the Renovationprocess, the Run QMRENO reigns supreme.
When the Renovation analyst invokes QMRENO, he/she is presented with importantinformation used to select the next run to renovate. A screen lists for their selectionsuch information as: the application codes, the application description, the priority ofthe application (the user has the option to prioritize the sequence of the applications tobe Renovated and Unit Tested), the total number of lines of code contained within eachapplication (this includes the RCRs which are subroutines), the total number of functionpoints which will be presented to the analyst for review and the percentage of the totalRuns that have gone through the Renovation process (see Table 1).
App Code | Description | Priority | Lines | Programs | Fun Pnts | Percent | Deadline | ar | Accounts Receivable | High | 10,838 | 104 | 1,314 | 100.0 | | bl | Billing | High | 16,334 | 143 | 1,948 | 100.0 | | bt | Batch Tickets | High | 16,967 | 113 | 2,178 | 100.0 | | gl | General Ledger | High | 22,215 | 144 | 2,450 | 86.6 | | cp | Compliance | Medium | 13,338 | 76 | 1,395 | 93.7 | | cr | Check Reconciliation | Medium | 116 | 4 | 9 | 8.1 | | iv | Inventory | Medium | 44,849 | 375 | 5,695 | 75.4 | | oe | Order Entry | Medium | 53,356 | 317 | 6,466 | 80.7 | | pr | Personnel, Payroll, | Medium | 10,489 | 37 | 740 | 41.2 | | sr | Sales Reporting | Medium | 4,093 | 36 | 630 | 32.9 | | ap | Accounts Payable | Low | 11,263 | 78 | 1,226 | 0.0 | | ei | Executive Information | Low | 501 | 5 | 48 | 0.0 | | fc | Formula Costing | Low | 18,865 | 147 | 1,926 | 0.0 | | |
Table 1
We found that it is best to assign an application code to one analyst. That analyst isthen responsible for Renovating and Unit Testing all the RCRs within an application code.(Later on, this concept may be changed to allow two or three Renovation experiencedanalysts to work on a single application, especially if the application is made of morethan 200 Runs, or if the application can be broken up into logical modules.)
The analyst then tabs down to the application code he/she is working on and they arepresented with the subsequent screen. It lists the Cabinet/Drawer/Report of the RCRs, theRCR Name (if it is a registered Run; unregistered RSRs have a blank in this field), thenumber of lines of code contained in the RCR, the number of function points (RenovationRun statements that the analyst will scrutinize), the analyst's name (the one Renovatingand Unit Testing this particular RCR), the Renovation Start and End Dates and the UnitTesting Start and End Dates (see Table 2).
The analyst double clicks or tabs to the RCR he/she wants to Renovate and theRenovation process is started. The first thing that happens is that QMRENO makes anarchival copy of the production RCR. Next, QMRENO searches the RCR for all pertinent Runfunction statements that are candidates for analysis and Renovation. The nine Runfunctions already mentioned (@SRH, @SRU, @MCH, @MAU, etc.) are automatically scrutinized.Only range searches are displayed for the @SRH and @FND functions. Other function pointsthat may be displayed to the analyst are: DATE, IF (only greater than or less thancomparisons), CAL, CNT, a special case of the @CHG function, the literals 999999, YY,000000, DATE6$, D6, DATE9$, D9, etc. There may be more target-strings that a particularcustomer wants to highlight because of unique programming techniques they have used. Theseare easily added to the driver table.
Cab | D | Rprt | Run Name | Lines | pnts | Owner | RStrDt | RFinDt | UStrDt | UFinDt | 2 | F | 268 | DOTINFO | 377 | 29 | ECM | 971224 | 980303 | 980107 | 980107 | 2 | F | 271 | | 59 | 3 | PEND | 971218 | 971218 | 971218 | 971218 | 2 | F | 272 | | 75 | 14 | PEND | 971218 | 971223 | 971223 | 971223 | 2 | F | 482 | ANNVOC | 82 | 21 | PEND | 971218 | 971218 | 971223 | 971223 | 2 | F | 902 | HAZMAT | 33 | 2 | CLOVIS | 980709 | 980709 | 980709 | 980709 | 4 | F | 81 | CARB | 101 | 14 | PEND | 971218 | 971218 | 971223 | 971223 | 6 | B | 89 | OOPS | 186 | 14 | PEND | 971218 | 971218 | 971218 | 971218 | 6 | B | 102 | | 99 | 11 | PEND | 971218 | 971218 | 971223 | 971223 | 6 | B | 122 | SARA | 553 | 85 | KIM | 971222 | 971224 | 971224 | 971224 | 6 | B | 126 | SARACLOSE | 33 | 1 | KIM | 971219 | 971219 | 971223 | 971223 | 6 | B | 128 | PENN | 105 | 1 | PMI | 971218 | 971218 | 971223 | 971223 | 6 | B | 139 | HMIS | 153 | 41 | PMI | 971218 | 971223 | 971223 | 971223 | 6 | B | 145 | | 173 | 28 | PEND | 971218 | 971218 | 971224 | 971224 | 6 | B | 171 | FRMVOC | 218 | 21 | PEND | 971218 | 971224 | 971224 | 971229 | 6 | B | 186 | | 134 | 12 | PEND | 971219 | 971219 | 971231 | 971231 | |
Table 2
The RCR to be Renovated is then displayed to the analyst, with the first function to beanalyzed highlighted. The analyst has the option of specifying the highlight colors (i.e.,some people might prefer a green highlight, others a white and still others yellow). Eachanalyst specifies the preferred foreground and background colors.
The analyst then makes the determination of whether the highlighted function pointshould or should not be Renovated.
The function keys provide a handy set of tools for the analyst to carry out their task.With the function keys the analyst can:
QMREMO FUCTION KEYS
Press the F1 function key to go on to the next Run statement to be analyzed. Press the F2 function key to display the cross-reference information for the RCR being worked on. The analyst may perform further cross-reference analysis and then RETURN right back to where they left off. Press the F4 function key to return to the previous function analyzed. Press the F5 function key to go to any candidate in the RCR being renovated. Press the F6 (DATA) function key to display data the function is accessing (i.e., if the Run refers to a field as 37-6, the analyst may display the data Report being referenced, and confirm that the field 37-6 is a date field as opposed to a part number field). A range of Reports will be displayed if the function is processing a range of reports. Functions using data dictionary (Names database), defines names and documented variables are all handled automatically. Press the F7 function key to locate any target string within the RCR being Renovated. You may request a result of all occurrences of the target string or you may request to be placed at each occurrence of the target string within the Run. Special care is made to handle V type variables correctly (i.e., V115 is not displayed if you specify V11). Press the F8 function key to display help documentation for QMRENO. Press the F10 function key to exit from the QMRENO process.
At any time you may return to the Run statement that you are analyzing for Renovation.At any time you may quit QMRENO, and when you return to your Renovation of the RCR, youwill take up right where you last left off.
There are many other functions that are available to help you do your task quickly andefficiently. For instance, if you solve a particular problem and discover that you missedthe point in other Runs, or if you want to ensure that no one in the group missed thepoint as well, you can invoke the Run QMLOCALL to find the particular target string in allthe RCRs in client's inventory, or just the Renovated or Not-Renovated RCR's. Theinventory Report keeps all the statistics on the status of all the RCRs that are beingRenovated. QMREF is another handy tool to see which RCRs reference or are beingreferenced by a particular RCR.
Identifying and Solving Y2K Programming Problems
Certainly the most successful Renovation analyst is the person who wrote the Run tobegin with. However, the person who wrote the Run is usually not available for Renovation.Nonetheless, it is very easy to see a Run writing style or pattern in a series of Runswithin an application area. The learning curve is quick, and, after several weeks ofexperience, recognizing the different techniques used by different Run writers is an easymatter and it becomes intuitive.
If in solving a problem the analyst decides that they want to see a particular functionor target string highlighted, all they do is include it in the table. A Renovated or UnitTested Report may be re-visited as many times as is necessary.
One caveat about Run Renovation; the analyst must resist the urge to enhance the code.This is presumptuous as well as risky business. The task at hand isn't to"improve" the code, but rather to make the code being utilized compliant for thenew millennium. Besides, what may sometimes seem as erroneous code many times turns out tobe legitimate. However, there are times when specific code just isn't correct. When thatoccurs, the analyst must advise the customer. If the Renovation analyst thinks of a viablesolution, they will definitely communicate it to the customer.
Unit Testing Process
Unit testing consists of testing those RCR's which have Y2K Renovation changes. Everyanalyst at KGI is instructed to keep meticulous records of the work being done. It isamazing how many times these notes are referenced for a number of reasons. They areespecially helpful as reminders to test particular options during the Unit Testing phase.
Unit Testing must be done in a Test MAPPER environment, and never in a productionenvironment. Even in a test environment the analyst must be very careful to either commentout or work around those functions that affect system files, start ECL run streams or sendconsole messages to the operators.
The most important function of Unit Testing is to ensure that the Renovated Runstatement is syntactically correct and will not give a MAPPER error message when executed.This is usually accomplished by the analyst going through the Run in a Run debug (or RDB)mode. This many times entails "jumping around" code in order to get to theRenovated Run statement.
Once the analyst achieves this first point, the second most important task is to ensurethat the results of the Renovated Run statement are exactly the same as those prior toRenovation, except for the dates.
Thirdly, the analysts should try to "seed" the database (Report or range ofReports) with Year 2000 dates. We at KGI found that even though you may obtain perfectlygood results with dates confined to this millennium, the results are incorrect whentesting with dates in the next millennium.
The analyst has a choice as to when he/she carries out Unit Testing. Some analystsprefer to Unit Test each Run which has Y2K changes immediately after they have finishedRenovating it. Still others prefer to finish with all of their Renovation for a particularapplication before starting. Either way, the inventory Report maintains all of theinformation needed for the analyst to take up where they last left off, whether they areRenovating or Unit Testing.
KGI currently has many Quick-MAP2000 customers. Some of these have chosen KGI todo the Renovation and Unit Testing for them. KGI has met or beaten every scheduledcompletion date for the first four customers. We are just starting the Renovation and UnitTesting for the fifth customer. The feedback from those customers which have chosen to dothe Renovation and Unit Testing on their own has been very positive. They like the tool!
System Testing
The next step in the process is System Testing. Simply stated, System Testing is theprocess of ensuring that the results of the business operations yield the same resultswith the Y2K Renovated code as they did before Renovation. Again, this must beaccomplished in a Test MAPPER environment.
Regardless of the success of the Unit Testing process, it is in the System Testing thatyou confirm that your business operations are Renovated (At least in this millennium. Moreon that later). If you are in Manufacturing, this means that your Order Entry System isworking as it should, and it is in concert with Purchasing and Manufacturing. GeneralLedger and Financial Reporting tie the results into a neat bundle. In this case, each ofthese application areas must be individually System Tested.
In the case of Valspar and Andersen Corporation, that is precisely the approach eachcompany took. Both companies are extremely well managed and they both approached the Y2Kissue in a similar fashion. Each created an internal team to address the Y2K issue andstaffed it with the best staff they could assemble, underscoring the importance given tothe project.
Andersen Corporation, from Bayport, Minn., is world famous for its manufacture ofwindows (Not Windows). Both Andersen Corporation and Valspar asked KGI do the Renovationand Unit Testing because it was the best use of their personnel and time. Valspar startedwith 2,692 Runs and Andersen Corporation with 1,033 Runs. After Renovation and UnitTesting, Valspar ended with 2,430 Runs and Andersen Corporation with 1,038 Runs.
Compliance Testing
Not all Runs fit into a specific application area. There typically are many commonsubroutines and utility Runs that are used in several different applications. For thisreason, each individual company must decide to what degree it will carry out System andCompliance testing.
After it tested its core business applications and all the Runs contained therein,Valspar chose to test the next "top 20 " (most frequently used) Runs within eachapplication area. In some application areas there were less than 20 Runs to test, so allwere tested. In other application areas (such as order entry) the next top 50 Runs weretested. Those Runs which were not System or Compliance tested (Runs which are veryinfrequently used) were placed back into production. As stated earlier, every single Runwas Renovated, and if Y2K changes were applied, it was Unit Tested.
Despite all the testing of the Valspar RCRs, there were some Runs that failed inproduction. The Help Desk personnel immediately took the failed RCR out of production andre-installed the previous production version. This would have been unthinkable if thedatabase were changed (the Data Approach). KGI's approach is very simple and straightforward because of the Y2K enhancements UNISYS made to the MAPPER system. This gaveValspar's Help Desk personnel the time to either fix the problem themselves, or to sendthe problem back to the Renovation team to fix and test and to then put back intoproduction.
In Andersen Corporation's case, all Runs were fully tested throughout all phases. Icannot emphasize enough that each testing phase is necessary. Valspar and KGI had donesuch a thorough job in the System Testing phase that I concluded that the ComplianceTesting phase was overkill. I was wrong. There were problems that cropped up only as aresult of the system clock being set to the year 2000. We fixed one problem that onlyoccurred on December 31, 1999. Another occurred with the clock set on February 29, 2000.Date manipulation techniques using the @DAT and @CAL and @IF functions didn't quite workin some cases. Each testing phase proved itself to be necessary. To have waited until theYear 2000 to address these unforeseen problems would have been chaotic.
Conclusions and Summary
Although both companies System and Compliance tested independently of each other, theyboth involved their users during testing (the users had to sign off on the testingresults). In addition, both companies kept detailed documentation of all the testingresults. This was not only done for the purpose of ensuring that the different testresults yielded exactly the same results as those of actual production scenarios, but toprotect themselves from any Y2K litigation that may be brought against them.
Any successful business endeavor entails a total team effort and top management'scommitment to the success of the effort. I was amazed at how Valspar and AndersenCorporation approached and resolved their MAPPER Y2K issue along parallel paths withouteither knowing the other's approach. Each knew exactly what needed to be done, and how togo about doing it within their corporate structure.
And that is the purpose of the Y2K effort; To ensure that your business processes willaccurately carry on in the next millennia, and to protect you from litigation. Now thattheir houses are in Y2K order in the MAPPER arena, both companies are ensuring that other,in-house arenas are also in Y2K order. The procedures don't stop internally. The nextgroup of people to be audited for Y2K compliance is their suppliers.
ABOUT THE AUTHOR:
Clovis Brackins is Y2K Project Manager of the Kaufman Group Inc. (Mesa, Ariz.). He hasbeen doing MAPPER Y2K Renovation for the past year, and has already successfullyY2K-Renovated, Unit-Tested, System-Tested and Compliance-Tested four major customers.