Review of NBSpool
Shawn M. Gordon
S.M.Gordon & Associates
I don’t know why it has taken me so long to do a review of NBSpool, I have been using it and loving it for years now. Well there is no time like the present, so here it is. NBSpool is a replacement and enhancement to SPOOK where SPOOK is available, and a wonderful alternative to those ever so confusing commands that arrived with the Native Mode Spooler. If I recall correctly the product was essentially a side effect of Netbase, the flagship product from Quest Software.
Just to give you a brief background, Netbase is the only good alternative (in my opinion) for doing real time shadowing of data bases and files across multiple HP computers. NBSpool also integrates into this environment giving you the ability to copy and move spool files easily from one machine to another. While the products work hand in hand, NBSpool is also sold separately for a nominal cost. I would have to say it is like the MPEX of spoolers, in that it let’s you do just about anything with a spool file.
At the time of this writing (mid April) I had just received an upgrade to my current version of NBSpool, that contained their brand spanking new on line report viewing utility (ala Reveal from O’Pin) called Vista. Since it was so new I ran into a couple of bugs, but I will attempt to review it here as completely as I can.
At it’s most basic NBSpool can serve as a replacement for SPOOK, but that barely scratch’s the surface. You can select spool files to alter, move, store, purge, etc., by using one or more of the following selection types.
Spool file DFID or range of DFIDs
Job/session number or range of job/session numbers
Output priority or range of output priorities
Logical device number
Device class with wildcards
File names with wildcards
User names with wildcards
$STDLISTs (include or exclude them)
Creation dates or date ranges
Spool file size
Spool files that contain a specified string or strings
Complex selections using ‘AND’, ‘OR’ and ‘NOT’ operators
By far the most amazing and useful function is the ability to text and view open spoolfiles. By open I mean jobs that are currently executing. Think about how useful this is for seeing how far along your jobs are. You can look at open spoolfiles on the Spectrum with the Native Mode spooler, but NBSpool has been around for years and let’s you do it on a Classic too.
So you now have a very sophisticated syntax for selecting spoolfiles for operations. You also have a facility to open and view spoolfiles that are currently executing. What isn’t so obvious is that NBSpool will also allow you to operate on input spoolfiles. These are spoolfiles that are in either a WAIT or SCHED state. This will let you view exactly what is being submitted to the spooler, so if you are using some method of resolving variables in your job stream at submission time you would actually be able to look at the spooler is going to see, before it actually executes it. You can also view the input spoolfile of a currently executing job as well.
Now here is a handy little scenario using both the input and output spool operations to speed up your recovery from a system failure;
Suppose your system crash’s and you want to recover all your jobs that are waiting to run and all your spoolfiles that hadn’t printed yet. The first thing you do is bring up the system warm and then run NBSPOOL. So now we will save our spoolfiles that haven’t printed. Usually you would use SPOOK to write these to tape, NBSpool can also do this and you have the option of using a SPOOK format type or the faster NBSpool tape format. My preferred solution however is to use the NBSpool command ARCHIVE to write them to disk.
So to save all spoolfiles and then purge them I would issue the command:
O> ARCHIVE @;FILE=A041592.SPOOLARC;PURGE
This would archive all spoolfiles into the file A041592.SPOOLARC and then purge them from the spooler. To restore them later we would use the UNARCHIVE command as shown:
O> UNARCHIVE @;FILE=A041592.SPOOLARC
It’s important to note that you can use any of the NBSpool selection criteria to further specify which spoolfiles you want to get out of the archive. To display the contents of an archive file you would type:
O> ARCDIR A041592.SPOOLARC
Ok we have now saved our spoolfiles, but what about our waiting and scheduled jobs? We would use NBSpools ability to work on input spoolfiles to tell it to MERGE them all off to a file:
I> MERGE @;FILE=ALLJOBS;PURGE
We now have a file called ALLJOBS that contains all the information necessary to restream the jobs, and the jobs are then purged from the job queue. Once we got the computer back up we could resubmit all these jobs using the STREAM command from NBSpool:
I> STREAM ALLJOBS
You can of course use any type of NBSpool selection criteria here that you deem appropriate.
Now that I covered the most basic features I will tell you about a couple of the nice ‘freebies’ that are thrown in with NBSpool. The first is spoolfile bannering.
Bannering consists of defining a report in their BANMAIN program and a distribution list for that report. After you have defined all the reports that you plan on you would then use the BANNER command in NBSpool to then create the banner on the report. Banners are nice because it makes report distribution a lot easier and cleaner, especially if someone is keeping all the distribution information in their head. Since NBSpool has the ability to execute command files you could have a job that ran NBSpool in the background and executed the banner command every 10 minutes or so. I personally set it up to execute once each day at about 5:00 am since I know my reports won’t have printed yet for the night at that point.
I have to say at this point that the documentation for the banner set up system is really bad and the guy who wrote it doesn’t work at Quest anymore. The set up is more confusing than it has to be especially since once you figure out how to set up something it is pretty darn easy to do. Hopefully this will get an overhaul in the near future, it could sure use it. I will say that I have made extensive and productive use the bannering and my users love it.
The last function I am going to cover is their new online report viewing function called Vista. I am not going to get to in depth on it, but I will cover the basics. There are two ways to define reports to Vista that I have noticed, one is to run the program VISTAMNT and define each report name and the appropriate security, description and generations. The second is to use the new NBSpool command BROWSE. Browse will take a spoolfile set and then load them into the Vista process and run Vista. You can then select and view reports, this will also load a default entry of the spoolfile into the Vista database that can then be modified if you so choose. This is the easiest way to get spoolfiles loaded into the system.
Once the reports are defined you would then need to use NBSpool to archive the spoolfiles. This is done with the new VSAVE command. Vista uses a folder metaphor to describe logical groupings of archived spoolfiles. So for example if I wanted to load up all the general ledger accounts into my GLREP folder I would issue the command:
O> VSAVE GL@;FILE=GLREP.FOLDER.NETBASE;DESC=”General Ledger Reports”
Now you could set up a way for your users to run the Vista program and they would be displayed with a list of folder names and descriptions, they could then open a folder and get a list of the reports that they could look at.
Vista let’s you configure for 80 or 132 column terminals as well as being able to scroll side to side and up and down. You can search for strings in the report or go to a particular page in a report. I have to say for not creating an index on the spoolfile they sure scan through it fast. You also have all sorts of options for printing to a spooled or local printer.
I would be remise if I didn’t mention the fact that Vista has a very nice screen interface, actually it’s the best interface I have ever seen come from Quest. This is good because if you are going to let end users use this you don’t want them calling you every five minutes because they don’t understand something. I don’t know how Vista is going to fair against people that are writing these types of programs stand alone, but the fact that it’s free with NBSpool is a big incentive to at least try it out and see how well it works.
I don’t know if I will be using it in my shop yet or not, currently I just archive $STDLIST files and then look at them in the morning for errors.
Usability (also installation)
The installation of NBSpool is a piece of cake, it is your standard restore a file from tape, add your passwords, stream the job and put the tape back online.
In the program itself, as long as you put in a valid command it works great, but there is a difference between what you think should work and how it will work. For example, I wanted to try and make some ‘mistakes’ and see how the software would react. So I decided to try to list all spoolfiles by issuing the command SHOW ALL. Of course no spoolfiles qualified since ALL is seen as a spoolfile name and there were none. So it is important to understand the Quest philosophy of what constitutes a file set and a subset.
The error trapping is good enough so that if you make syntax error it will tell you what was wrong. However as in the case of my previous example, the command was valid but the expectation was invalid.
I hate to admit it, but NBSpool did hang my system once during a very critical time. Unfortunately by virtue of some the great things they do for you, they have to do some pretty tricky low level stuff. I happened to catch a timing problem that they hadn’t been aware of. I did however have a new version uploaded to my system within 24 hours of the problem.
Besides the one system hang NBSpool performed like a champ, doing everything I wanted it to do with no un-expected results. The only things you might find a little confusing are the spool file bannering and the on line report viewing modules. Other than that you will probably be more prone to not use something just because you didn’t realize it was possible.
The only time I ever saw any significant impact on my performance with NBSpool, was when I was searching for strings in very large spool files or copying large spool file. I mean how much can you possibly be doing in a spooler that could seriously degrade your performance? I did find that using the View command on an open spoolfile wasn’t as reliable as using the Text command. I am not sure why that would be, but I was getting some file system errors periodically.
Supportability (including Doc)
Although NBSpool is a terrific product it’s documentation is rather lacking. There are hardly any examples and the explanations of a lot of the commands is all to brief. The spoolfile bannering documentation is horrible, the documentation for the new Vista function is better, but it follows the same format of the rest of the documentation which is based on MPE’s help facility.
I think to work at Quest you have to pass an I.Q. test or something because everyone there is brilliant. The support I have gotten from them over the years has always been fast and helpful, and you can usually reach someone any time of the day or night, they have a service that pages the support personnel who are on duty.
To me NBSpool is one of those ‘must have’ utilities along the lines of MPEX. It’s worth buying just to get the ability to look at open spool files while they are executing. All the other functions that are available in the software just make it that much more valuable to the user. If you can afford it, and I think it is very reasonably price, you should get it.
NBSpool version 0.9.2 update 6
610 Newport Dr. Ste 890
Newport Beach, CA 92660
Call, write or FAX for more information or a demo, there is one manual included that’s about a half inch thick.
The price of the product ranges from $1500 to $7000 depending on CPU and support costs $250 to $1120 depending on CPU.
Let’s you view open spool files
Same program runs identically on both classic and spectrum
Versatile command syntax
Subset syntax is rather cryptic
The manual isn’t very good at explaining some things
Need to implement a redo history