|Click here for Robelle sponsor message|
|A Prescription to Quick
Year 2000 Compliance
|Millennium Rx helps buy time to bring
more applications in line for the century shift
Millennium Rx version 980111
Review by Shawn Gordon
As I write this, there are about 570 days left till the year 2000. Every day I run into another company that hasnt 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 more quickly, or buy them some time to finish.
Millennium Rx (MRX) is a product that will help buy you time, or possibly avoid making 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 are date windowing and date bridging? Windowing allows you to specify a pivot year, something like 1970, so that any years 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. It automatically handles 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 lets say your databases are in YYMMDD format, but for extraction and reporting they need to be YYYYMMDD. You create 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 two-digit year, and another a four-digit year. This allows converted, and non-converted programs to run simultaneously.
A nice side benefit of MRX is
its 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 four
times (or more) faster than
TurboSort on the HP 3000.
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, but 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 four-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 (shown below) that allows you to specify the type of date and physical location in your database of every date that you want to affect.
Select the operation you
would like to perform
If the field is a data item, you can just specify the data item name and have it affect all datasets. You can specify the byte position of the date within a field, so for those big generic buffers that have embedded dates, youre all 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 its stand-alone high speed sort program, one 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 fewer features. This program will let you do the same types of things with dates as the intercept routines.
Installation is the very common type load tape, restore job, stream job, reload tape, done. Installation is quick and clean, and the software takes up 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
helps get you started. I think,
however, the product could greatly
benefit from a small tutorial
guide, including a sample database
and one or two sample programs.
This would really show you
whats going on some of these concepts
can be a little tough to wrap your
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 1 for my results. The first example is before any change as you can see the date has no century on it. The second example shows the same data being retrieved through MRX using a pivot year of 97, so our date comes out in the year 2000. The third example shows the data through MRX using a pivot year of 50, so now we have a century of 19. This was accomplished with just a few minutes of setup, 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 have data that has dates in the next century this is where a data aging product would come in handy.
I didnt 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 in 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 than CM Query.
Its very nice that MRX supports CM and NM style programs, since it is pretty likely that your program is in CM if you dont 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 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. Instead, I am starting to look at MRX as 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 bridging as more of an intermediate and 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, its pretty easy. If you are starting to run down to the wire on Y2K, MRX could save your bacon.