Test Drive of Millennium Rx
Shawn M. Gordon
S.M.Gordon & Associates
What it can do?
As I write this, there is about 570 days left till the year 2000. Every day I run into another company that hasn’t even started dealing with this issue yet. Fortunately for many of these companies, there are more and more products coming out that either help them make the conversion quicker, or buy some time to finish.
Millennium Rx (MRX) is a product that will help buy you time, or possibly never make the change. What MRX does is provide intercept software for doing date windowing or bridging, it also handles all of the date dependent sort scenarios that can arise.
What is date windowing and date bridging? Windowing allows you to specify a pivot year, something like 1970, so that any year between 00 and 69 are assumed to be in the century 2000, and 70 thru 99 are assumed to be in the century 1900. The big trick here is to make sure that your sorting comes out correctly, and this is one of the things that MRX does for you, is to automatically handle the manipulation of dates for sorting purposes when used with a pivot year.
Date Bridging involves converting dates from one format to another on the fly. So your databases are in YYMMDD format, but for extraction and reporting they need to be YYYYMMDD. So you have a bridge filter which converts date values as one file is copied to another, and a bridge wrapper which converts date values as records are written or read by an application program. The wrapper technique allows separate programs to have different views of the same physical data. One program will see a 2 digit year, and another a 4 digit year. This allows converted, and non-converted programs to run simultaneously.
A nice side affect of MRX, is it’s sort utility. This is used internally to make sure that your reports come out in the correct sort sequence when using windowing and/or bridging. The best part is that the MRX sort utility can be up to 4 times or more faster than TurboSort on the HP 3000.
How does it work?
MRX comes with both NM and CM trap libraries in the form of an XL and an SL. You need to direct your code through the libraries so that it can cross reference your application against the configuration and determine what kind of changes need to be made, if any, to the dates.
Command files are included that will do the LINKEDIT..ALTPROG to attach or detach the MRX libraries, but for CM code you will have to copy the SL into the appropriate area and run with a LIB option. This allows MRX to intercept and properly handle pretty much any kind of date for bridging, so we have 98 in the database, and 1998 returned to the application.
MRX also allows you to properly sort data whose dates are stored in a non-sortable format. For example, some companies instead of going to 4 digit years, are going to use A0 to represent 2000, A1 for 2001, etc. This obviously presents problems for sorting reports, or doing range retrievals. MRX handles all of this for you, and by using their sort utility, you realize performance benefits as well.
There is a config program, see figure 1, that allows you to specify the type of date, and physical location in your database of every date that you want to affect. If the field is a data item, you can just specify the data item name and have it affect all datasets if you wish. You can specify the byte position of the date within a field, so for those big generic buffers that have embedded dates, your set. The software supports ASCII, Integer, and Packed style dates.
This program also allows you to set up and store sort rules for these fields so that a year of A0 or 00 will end up sorting correctly with a year of 99, for example.
MRX also includes the standalone high speed sort program, that also allows you to do high speed extracts from image data sets, you can think of this program as similar to Supertool from Robelle, but with less features. This program will let you do the same types of things with dates as the intercept routines.
Installation and Documentation
Installation is the very common type of load tape, restore job, stream job, reload tape, done. Installation was quick and clean. The software is less than 10 megabytes.
The documentation is well written, and clearly organized and includes a table of contents. There is a nice introduction to the concepts of windowing and bridging that help you get started. I think, however, the product could greatly benefit from a small tutorial guide that included a sample data base, and one or two sample programs. This would really show you what’s going on, some of these concepts can be a little tough wrapping your brain around.
I have a sample data base that is an extreme example of poor use of dates. It has huge generic ASCII buffers, with 32 bit integer date fields embedded in them. MRX only supported an offset of up to 99 initially, but after I talked with them, they bumped it up to 9999.
I configured a couple of embedded dates in my database, and used a generic lookup program to see what I got, See figure 2 for my results. The first example is before any changes, as you can see the date has no century on it. The second example shows the same data being retrieved through MRX and a pivot year of 97, so our date comes out in the year 2000. The third example shows the data through MRX and a pivot year of 50, so now we have a century of 19. This was accomplished with just a few minutes of setup, and running the lookup program through the MRX XL library.
I was able to retrieve the data and sort using their supplied utilities as well, to really test, you need to be able to have data that has dates that are in the next century, this is where a data aging product would come in handy.
I didn’t write any programs to take advantage of the two supplied date manipulation routines, but they appear to be similar to some of the new HP supplied date intrinsics, which I have used.
All and all, everything worked very well, and as advertised. I did run into a problem with Native Mode Query, but Redstone fixed this the next day, which makes the question of good support a non-issue, support was excellent. Turns out that
NM Query does different things with the database name that CM Query doesn’t do.
It’s very nice that MRX supports CM and NM style programs, since it is pretty likely that your program is in CM if you don’t have the source for it. This just underlines the completeness of the product. I liked that they include utilities for adding their sort intercepts to your programs without having to change anything in the environment. The performance on their sorts is just astounding, and it really does help to speed up Powerhouse code.
My personal preference is to bite the bullet, and make the changes that are needed to live to the year 10,000, however this may not be practical in all, or even many situations. What I am starting to look at MRX as is my plan B. I am thinking that we plan for the whole shebang, but start setting up MRX at the same time to make sure that we are covered, and say we are Y2K compliant now. Windowing is a viable alternative for some time to come, but I see the bridging as more of an intermediate, but crucial step.
MRX is a fine product, a bit confusing to explain to many people, and a bit more confusing once you get into the details, but Redstone has done a good job of making this as easy as possible, and honestly once you start doing it, it’s pretty easy. If you are starting to run down to the wire on Y2K, MRX could save your bacon.
Millennium Rx version 980111
Redstone Technologies, Inc.
4786 S. Olathe Way
Aurora, CO 80015
Millennium Rx comes with a standalone sort and extract utility that can be used to test your configuration, or used as a general purpose high speed sort and extract tool. You also get the intercept libraries which will handle all of your bridging and windowing needs for retrieve, putting, updating, and sorting data. The intercept libraries have the nice side affect of speeding up the sorting of programs that run through them, sometimes by a very large amount.
Millennium Rx runs on all HP 3000 Series, Classic or Spectrum. The software is tier based ranging from $3,765 to $18,900 for Model II, which includes both Windowing and Bridging. Model I is just Windowing and is 75% of the price. Discounting on multiple CPUs. Support is 15% of the purchase price per year and includes phone in, electronic support and new releases of the software. All prices are in US dollars.
Figure 1. Select the operation you would like to perform 0 - Set system Year 2000 cutoff (pivot) value 1 - Add new Image controls to the MRX Database 2 - Delete existing Image controls in the MRX Database 3 - List existing Image control entries in the MRX Database 4 - Obtain help information on Millennium Rx 5 - Add new SORT controls to the MRX Database 6 - Delete existing SORT controls in the MRX Database 7 - List existing SORT control entries in the MRX Database
Exit program Figure 2 Without MRX Itemname Definition | Item Value .AL-HOSP-PPO-REC (Record) : . AL-H-TAX-ID X(10) Disp : . AL-TAKEOVER-DATE S9(6) Comp [ 940106+] : . AL-NAME X(55) Disp [LOMA LINDA ] . Continued:Bytes 37-055 [ ] : . AL-H-EFF-DATE S9(6) Comp [ 920501+]<-#> : With MRX setjcw year2000cutoff=97 Itemname Definition | Item Value .AL-HOSP-PPO-REC (Record) : . AL-H-TAX-ID X(10) Disp : . AL-TAKEOVER-DATE S9(6) Comp [ 20940106+] : . AL-NAME X(55) Disp [LOMA LINDA ] . Continued:Bytes 37-055 [ ] : . AL-H-EFF-DATE S9(6) Comp [ 20920501+] : With MRX setjcw year2000cutoff=50 Itemname Definition | Item Value AL-HOSP-PPO-REC (Record) AL-H-TAX-ID X(10) Disp AL-TAKEOVER-DATE S9(6) Comp [ 19940106+] AL-NAME X(55) Disp [LOMA LINDA ] . Continued:Bytes 37-055 [ ] : . AL-H-EFF-DATE S9(6) Comp [ 19920501]