Review of HourGlass 2000
Shawn M. Gordon
S.M.Gordon & Associates
Funny how once an idea get’s out there, everyone start’s doing it. Last month I reviewed Time Machine which used Procedure Exits to do virtual dates and times. This month I am reviewing HourGlass, which allows you to do virtual dates and times, but seems to do it at a much lower level in the operating system than Procedure Exits allow. What’s ironic I think is that Time Machine was out first based on a premature product announcement for HourGlass, darn that Microsoft for starting the trend. In any case it appears HourGlass was worth the wait, so here we go.
I tested HourGlass on a 927 running MPE/iX 5.5, power patch 2. I tested with COBOL and SpeedWare.
So basically HourGlass 2000 supports three kind of altered date/times:
– Absolute Constant Time (ACT)
Example: always return 2000-01-13
– DeltaTime (DT)
(also known as Constant Offset Time)
A constant offset from the real date/time;
Example: today plus 10 years
– Relative Constant Time (RCT)
(or Step Start Time)
An initial constant value, which starts progressing in real time as the application (or job) progresses;
Example: application (or job) starts at 2000-01-13 @ 00:00, a second request two minutes later would be told 2000-01-13 @ 00:02
Additionally, HourGlass 2000 for the HP 3000 knows about the original (“real”) time, which can be specified by asking for a date/time type of “ORIGINAL”.
Date and Time Formats
The “Relative Constant” and “Absolute Constant” methods require a date (or a date and time), which may be entered in any of the following formats (in all formats, the separator may be either a “-” or “/”):
Format Example 1 Example 2 Example 3
—————— ———- ——— —————–
yyyymmdd[hhmm[ss]] 20010514 19991022 19991231235959
mm/dd/[yy]yy [timespec] 05/14/2001 10-22-99 12/31/99 23:59:59
[yy]yy/mm/dd [timespec] 2001/05/14 99-10-22 99-12-31 23:59
dd/mm/[yy]yy [timespec] 14/05/2001 22-10-99 31-12-99 2359
The [timespec] is: hh:mm[:ss] or hhmm[ss].
If you don’t specify a time, the HGCONFIG file assumes midnight and the :HGDATE command assumes the current system time. You would be hard pressed to think of anything else that you could specify in terms of date/time values. The single feature that really stands out for me is the ability to specify the date/time for processes other than your own. I really envision having end users doing testing, but I don’t want to teach them how to deal with setting date and time offsets, so by either using the config file (explained in a bit), or be setting the values myself remotely, I am able to control and ensure that the process is correct.
Let me talk about the config file that hourglass uses for a minute. You can specify what they call rules, which may be limited to particular processes based on:
1. The process type (job, session, or system)
2. The process’s program name
3. The logon of the job or session that created the process
4. The LDEV of the session that created the process
For each rule, you specify:
1. The Date Calculation Method, and
2. The Date/Time (for ACT and RCT rules) or Offset (for DT rules).
These “rules” can also be specified interactively through the command line interface to hourglass. here are some examples of syntax
@,@.@,@ TEST2000.PROG.FOO 20 ABSOLUTE 2000-1-1 ACT,@.@,@ @.@.@ @ ABSOLUTE 2000-1-1 RCT,@.@,@ @.@.@ @ RELATIVE 2000-1-1 DT,@.@,@ @.@.@ @ DELTA 1 YEAR ORIG,@.@,@ @.@.@ @ ORIGINAL @,@.@,@ EDIT2000.PUB.SYS 20 ABSOLUTE 2000-1-1 #J SHAWN,MGR.SMGA,@ @.@.@ @ ABSOLUTE 1960-05-14 #S SHAWN,MGR.SMGA,@ @.@.@ @ ABSOLUTE 2001-05-14 @.PUB.ROBELLE @.@.@ @ ORIGINAL ALWAYS
These “rules” are evaluated when you “start” hourglass. Unlike competing products, hourglass is first enabled on the system, and then each process on the system can then have their virtual date/times set for them through the config file, by you the “time administrator”, or by executing HGDATE commands (which is just a command file that passes data to the hourglass program). You can force hourglass to re-parse the config file at any time while it is on, but you need to remember to do it if you are are making changes on the fly.
There are quit a few commands in the hourglass program that you can execute for administrative features, for example you can “enable” and “disable” hourglass, without having to “start” and “stop” it. There are a number of logging features that can be enabled, and log files that can be queried. As a matter of fact, when I first got hourglass it didn’t have any logging features, so I asked for them, and I got a plain ascii file that every date call on the system in it, which was impossible to deal with if you are trying to look at a single process, so I got another change put in which modified the structure of the log file, and added search commands to the log file. This all happened in about a week, so I was pretty happy with the response there. Take a look at Figure 1 to see an example of the log file information.
The SHOWLOG command has the following options;
SHOWLOG EVENTS Displays information from EVENTS (major commands) log files. SHOWLOG [ <
] [ < ] Displays information from INTRINS (logged INTRINSICS) log files. which ::= <<#Jnnn | #Snnn | #Pnnn | PROGRAM file.group.account<;> JOBS | SESSIONS | PINS | PROGRAMS<;>
This is really handy for knowing what is getting called from your programs that need’s to be addressed. For example, I had no idea that the COBOL functions for CURRENT-DATE and WHEN-COMPILED called the HPGMTSECS intrinsic. As a matter of fact, I didn’t even know there was such a thing.
HourGlass even has an option to use a web browser to look at the current “time” state on the system, and will automatically install the CGI programs to the appropriate httpd server area for you. I didn’t use this option, but it sounded pretty neat.
I don’t want to re-hash every command and capability that the software has, but I think I have gone over enough to give you a flavor of what is possible with HourGlass. The demo is easy enough to get, so check it out.
Usability (also installation)
The installation was really pretty cool, at least from downloading it off the web. Basically you download this ASCII file that they have put together that lumps everything in there in a compressed ASCII format. Just upload this and stream it. The job will re-create the compressed file, decompress it, and do the installation of the software.
Every test I did with HourGlass worked except for the fact the it is limited to 12/31/2027, which I suppose is valid since all the HP date intrinsics break in 2028 anyway. I tried wildcarded system variable display and
dereferencing, SHOWCLOCK, SHOWTIME, the posix date commands, redirecting the output of commands. I do think that the software should tell you that the date is out of range and tell you the appropriate range when you try to go outside of it, instead the program terminates in an error state on the date parsing algorithm, but other than that, everything is rock solid.
Performance doesn’t seem to be an issue with the HourGlass. It adjusts your date and time almost instantly, and has no visible system impact.
Supportability (including Doc)
Support from Allegro is very quick and accurate, I was very happy with the response I got to my questions, and the speed with which I received them. I was really happy with the response I got for requests for features, they were implemented quickly, and worked quit well. The manual is very slim at 15 pages, but is rather terse in the way it is written, this is one of those style things that’s hard to put your finger on.
I must say that HourGlass operates at an incredibly low level, they catch everything as far as I can tell, a number of which that Time Machine doesn’t. They were very responsive to my requests for enhancements, especially for the logging features. I like the ability to set the date/time for processes other than your own, and the robust selection of date/time manipulation features, as well as the extremely flexible configuration file, make HourGlass a product that you can easily rely on and use.
I do have a couple of complaints, but they are probably more a matter of opinion. I don’t care for the way enabling logging start’s logging every date call on the system. If you have a batch scheduler running this can add up fast, and makes it a bit annoying to work your way through the log file. I also don’t agree with letting the software put the virtual date/times on created or modifed files. This might be necessary for some applications, but I can see it being more of a problem than a boon. At least the FIXFDATE program will fix dates as part of a file set on the system, and you don’t have to remember what the files where yourself. If you are doing the whole system though this can be rather time consuming. I also think that the product is a bit on the expensive side for what you are getting. You can almost buy a crash-and-burn machine and just mess with the dates through SETCLOCK for the same price, but it depends on your environment.
Like I said earlier, this is a very robust product and should be able to handle anything that you throw at it. If you are looking for something to help with the year 2000 problem, or even need to look at doing date/time sensitive testing for year end, month end, etc., then you should check out the demo from Allegro. It can easily be downloaded from their web site.
HourGlass 2000 version 97Ka
Allegro Consultants, Inc.
2101 Woodside Rd.
Redwood City, CA 94062
Software is $5,900 for 1st CPU, $4950 for 2nd CPU, and $2,950 for each CPU thereafter, support for first year included, 15% of purchase price per year thereafter. Includes one 15 page, online manual. Call, write, fax, or email to receive your free demo.
Figure 1: DEV:SYS.PUB: hourglass showlog #s185 Welcome to HourGlass 2000 for the HP 3000! Version 97Ka 1997-10-22 10:08:28.0 150 HOURGLAS.PUB.SYS 1997-10-22 10:08:28.0 150 CALENDAR 1997-10-22 10:08:28.0 150 CLOCK 1997-10-22 10:08:28.0 150 CALENDAR 1997-10-22 10:08:28.0 150 CLOCK 1997-10-22 10:08:28.0 150 CALENDAR -<;> 2003-05-14 10:08:28.0 RCT,s 1997-10-22 10:08:28.0 150 CLOCK -<;> 2003-05-14 10:08:28.0 RCT,s 1997-10-22 10:08:28.0 150 CALENDAR = 2/1, CLOCK = 2/1 1997-10-22 10:08:28.0 150 (terminate) 1997-10-22 10:08:35.0 88 DATEZ.PROGNM.SMGA 1997-10-22 10:08:35.0 88 HPGMTSECS -<;> 2003-05-14 10:08:35.0 RCT,s 1997-10-22 10:08:36.0 88 CALENDAR -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CLOCK -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CALENDAR -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CLOCK -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CALENDAR -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CALENDAR -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CALENDAR -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CLOCK -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 DATELINE -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CLOCK -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CALENDAR -<;> 2003-05-14 10:08:36.0 RCT,s 1997-10-22 10:08:36.0 88 CALENDAR = 0/6, CLOCK = 0/4, DATELINE = 0/1, HPGMT SECS = 0/1 1997-10-22 10:08:36.0 88 (terminate) 1997-10-22 10:10:23.0 112 CI.PUB.SYS 1997-10-22 10:10:23.0 112 CALENDAR -<;> 2003-05-14 10:10:23.0 RCT,s 1997-10-22 10:10:24.0 112 CALENDAR -<;> 2003-05-14 10:10:23.0 RCT,s 1997-10-22 10:10:48.0 190 HOURGLAS.PUB.SYS 1997-10-22 10:10:48.0 190 CALENDAR -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:48.0 190 CLOCK -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:48.0 190 CALENDAR -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:48.0 190 CLOCK -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:48.0 190 CALENDAR -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:48.0 190 CLOCK -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:48.0 190 CALENDAR -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:49.0 190 CALENDAR -<;> 2003-05-14 10:10:48.0 RCT,s 1997-10-22 10:10:49.0 190 CALENDAR = 0/5, CLOCK = 0/3 1997-10-22 10:10:49.0 190 (terminate) 1997-10-22 10:11:01.0 188 HOURGLAS.PUB.SYS 1997-10-22 10:11:01.0 188 CALENDAR -<;> 2003-05-14 10:11:01.0 RCT,s 1997-10-22 10:11:01.0 188 CLOCK -<;> 2003-05-14 10:11:01.0 RCT,s 1997-10-22 10:11:01.0 188 CALENDAR -<;> 2003-05-14 10:11:01.0 RCT,s 1997-10-22 10:11:01.0 188 CLOCK -<;> 2003-05-14 10:11:01.0 RCT,s 1997-10-22 10:11:02.0 188 CALENDAR = 0/2, CLOCK = 0/2 1997-10-22 10:11:02.0 188 (terminate) 1997-10-22 10:12:00.0 95 HOURGLAS.PUB.SYS 1997-10-22 10:12:00.0 95 CALENDAR -<;> 2003-05-14 10:12:00.0 RCT,s 1997-10-22 10:12:00.0 95 CLOCK -<;> 2003-05-14 10:12:00.0 RCT,s 1997-10-22 10:12:01.0 95 CALENDAR -<;> 2003-05-14 10:12:01.0 RCT,s 1997-10-22 10:12:01.0 95 CLOCK -<;> 2003-05-14 10:12:01.0 RCT,s Used 50 (out of 233 records) DEV:SYS.PUB: hourglass showlog #s185 summary Welcome to HourGlass 2000 for the HP 3000! Version 97Ka From EACHCALL entries: Intrinsic #Unaltered #Altered calls ------------ ---------- -------------- CALENDAR 2 20 CLOCK 2 14 DATELINE - 1 HPGMTSECS - 1 Used 57 (out of 240 records) 97/10/16 14:02:55.9 #S13 138 203 INSTALL: version = 97Ka 97/10/22 10:06:55.5 #S185 206 112 start 97/10/22 10:08:01.2 #S185 58 112 logging all 97/10/22 10:08:28.6 #S185 150 112 setdate 5/14/2003 97/10/22 10:10:48.8 #S185 190 112 showlog events 97/10/22 10:11:01.3 #S185 188 112 showlog all 97/10/22 10:12:01.1 #S185 95 112 showlog #s185 97/10/22 10:12:46.9 #S185 146 112 showlog #s185 summary 97/10/22 10:12:59.1 #S185 182 112 showlog #s185 longsummary 97/10/22 10:15:10.6 #S185 114 112 logging off