From: Technical Support Department
To: Users of Robelle Software
Re: News of the HP e3000 and of HP-UX, 2000 #3
How many times has this happened to you? You use a Web search engine to look for something and link to an interesting Web site, only to find that the link took you somewhere you didn't want to go? But when you click the Back button, nothing happens. You think that maybe you didn't click, so you try again. Nothing. Oh no, you're trapped!
Besides making a mental note to never visit this Web site again, you need a way to get out without shutting down your browser. Here is how to get back to the site that sent you on your one-way journey. Internet Explorer and Netscape Navigator both have a small down arrow next to the Back button that allows you to see a history of the most recent pages you've been on. Click the down arrow or right-click the Back button, then select the second item in the history list to jump over the page that is trapping you.
[Marie Reimer and Mike Shumko]
Recently we received a call from HP about reports that files extracted with Suprtool on MPE/iX 6.5 were, in some cases, creating files with a negative EOF.
Closer inspection of this problem and a bit of experimentation with some Suprtool Set commands revealed that in the following cases:
the EOF of the file would be set to zero. In addition, if the file had user labels (as in the case of the Output command with the Link option) it would actually have a negative EOF.
In Suprtool the workaround to this problem is to use the Set Squeeze Off command, which does not use the FCLOSE truncate operation.
HP has developed the MPELX71A patch to fix this problem in FCLOSE. We highly recommend users obtain this patch for MPE/iX 6.5.
One of the first things we noticed when we loaded MPE/iX 6.5 was that our HP 7978 reel tape drive would not work. A quick call to the Hewlett-Packard Response Center (HPRC) confirmed what was already in the 6.5 Communicator, that HPIB devices such as printers and our tape drive were no longer supported.
From the 6.5 Communicator:
In order to streamline the development and test of future MPE/iX releases, the PBA-IB HPIB Device Adapter (A1747A) and old CIB I/O based HP 3000 Servers will not work with MPE/iX Release 6.5 and later releases.
Because many customers are unsure if they have any HPIB devices, Jeff Vance of HP CSY developed a CI script (see below) that will test for the presence of these devices. You can obtain the script from
The Communicator suggests replacing your HPIB I/O cards and peripherals with SCSI or LAN connected peripherals. For our situation we could buy an HP 7979A, 7980A or a 7980XZ tape drive plus a kit to convert it from HPIB to SCSI. The product number for the kit is 88707S with a different option number for each of the three tape drives.
One of our customers had a similar problem with his 2567C Printer. HPRC told us that it is possible to replace the HPIB interface card with a serial (connected to a DTC) or centronics (connected to a JetDirect) interface card. This can also be done for line printer models 2566C, C2354A and C2356A.
The 256x family has been discontinued for several years, and parts are no longer available from HP, but third-party sources like Computech at http://www.computech.com/ and Genisys at http://www.genisyscorp.com/ are able to help you.
According to Eric Sorensen at HPRC, the big difference in functionality will be the loss of page-level recovery(PLR). PLR will not be possible with the serial or centronics interface, but otherwise the printer will function correctly. If PLR is required, then they suggest purchasing one of the LP or LineJet printers (C320xC or C320xD).
So if you have any HPIB printers or tape drives, you will need to upgrade or replace them before you install the MPE/iX 6.5 operating system. For Fiberlink (FL) devices, your only option is to replace them.
PARM entry=main comment This script checks the current system for one or more configured HP-IB comment or FL Device Adapters. If any are found they and the attached devices comment are reported. comment Jeff Vance, CSY Apr 2000 comment if "!entry" = "main" then echo echo *** HP-IB and FL device checker for 5.0 and later MPE/iX systems *** echo setvar _hpib_conf_file "IOPATHP.CONFIG.SYS" if not finfo(_hpib_conf_file, "exists") or & setvar(_hpib_eof,finfo(_hpib_conf_file,"eof")) = 0 then echo WARNING!!! The IO configuration file "!_hpib_conf_file" does not echo exist or is empty! echo return endif comment read the IO config file continue xeq !hpfile read <!_hpib_conf_file echo echo === S U M M A R Y === echo echo ![rpt(" ",10-len("!_hpib_hpib_dam_cnt"))]!_hpib_hpib_dam_cnt HP-IB & Device Adapters echo ![rpt(" ",10-len("!_hpib_fl_dam_cnt"))]!_hpib_fl_dam_cnt FiberLink & Device Adapters echo ![rpt(" ",10-len("!_hpib_dev_cnt"))]!_hpib_dev_cnt HP-IB and/or FL & devices echo deletevar _hpib_@ return elseif "!entry" = "read" then comment This entry reads the IO conf file. Input is redirected to this file. comment setvar _hpib_hpib_dam_cnt 0 setvar _hpib_fl_dam_cnt 0 setvar _hpib_dev_cnt 0 comment read the io config file input _hpib_rec while setvar(_hpib_eof,_hpib_eof-1) >= 0 do setvar _hpib_path "" if pos("HPIB_DAM",_hpib_rec) > 0 then setvar _hpib_hpib_dam_cnt _hpib_hpib_dam_cnt+1 setvar _hpib_path rtrim(str(_hpib_rec,2,16)) echo HP-IB Device Adapter at path !_hpib_path. Card ID: & ![str(_hpib_rec,42,16)] elseif pos("ALINK_DAM",_hpib_rec) > 0 or & pos("NIO_ALINK_DAM",_hpib_rec) > 0 then setvar _hpib_fl_dam_cnt _hpib_fl_dam_cnt+1 setvar _hpib_path rtrim(str(_hpib_rec,2,16)) echo FL Device Adapter at path !_hpib_path. Card ID: & ![str(_hpib_rec,42,16)] endif if _hpib_path <> "" then comment scan for the hp-ib or FL devices off this DAM setvar _hpib_save_eof _hpib_eof while setvar(_hpib_eof,_hpib_eof-1) >= 0 and & pos(_hpib_path,setvar(_hpib_rec,input())) > 0 do setvar _hpib_dev_cnt _hpib_dev_cnt+1 setvar _hpib_dev_path rtrim(str(_hpib_rec,2,16)) echo !_hpib_dev_path ![rpt(" ",12-len("!_hpib_dev_path"))] & ![str(_hpib_rec,34,26)] endwhile comment adjust eof cntr for "read-ahead" feature above setvar _hpib_eof _hpib_eof+1 if _hpib_save_eof = _hpib_eof then echo (no devices for this DAM) endif echo elseif _hpib_eof > 0 then comment read next record input _hpib_rec endif endwhile return endif
I was testing a new job that was meant to abort our nightly backup job if it was still running when users needed to get back on-line. Luckily it was running on our test CPU, because it caused three system aborts before we tracked down the problem. The problem occurred when the backup job was aborted during the Store operation. On MPE/iX 6.5 the following message was generated:
System Abort 1070 from subsys 101 Secondary status: info = 790 subsys = 122
We reported the problem to HPRC right after Ron Windisch from Vesoft reported it. HP has found the source of the problem and has developed patch MPELX70 to fix it.
Q: How do I turn off those annoying progress messages in Suprtool? For example,
5% In=9660 Out=0 Delta-Sec=1. Wall-Sec=1. Cpu-Sec=1. 10% In=20470 Out=0 Delta-Sec=2. Wall-Sec=3. Cpu-Sec=1. 15% In=31165 Out=0 Delta-Sec=2. Wall-Sec=5. Cpu-Sec=2.
A: Progress messages are issued when the input file/dataset is over a certain size. By default that threshold is set to 50,000. You can set it higher using the Set Progress command. The syntax is
set progress minimum n
Progress messages will not be issued when the source of records has fewer than n records. To have this command take effect globally, put the command in Suprtool's configuration file, which is called Suprmgr.Pub.Sys.
This and many other useful tips can be found on the Suprtool FAQ page at http://www.robelle.com/support/suprtool/.
For years we have all been collecting e-mail addresses in our customer information systems. But how do we know that the e-mail addresses are legitimate, and that our customer service reps haven't simply been entering "none" or "dunno" all this time?
The simplest form of an e-mail address is email@example.com, where top is a top-level domain such as com or org. One simple check we can do is to ensure that the address contains at least an at sign and a dot. In terms of Suprtool, this can be determined by a pattern with wildcards. For example,
if email-address == "@&@@.@"
To find invalid addresses, use "><" instead of "==." This simple process weeds out grossly incorrect addresses such as "none" or "mike@robellecom," but it won't detect an error such as "mike firstname.lastname@example.org," which has an embedded space. For that we can use Qedit regular expressions, which have been mentioned in previous newsletters, since they were introduced last year in Qedit 4.8.
Although Suprtool does not have regular expressions, you can use it to write the suspect addresses to a file and process them using Qedit. The regular expression for verifying an e-mail address is
In Qedit terms, this can be a string in a List or Find command. For example,
listq "^[0-z_.-]+@[0-z_.-]+\.[0-z_.-]+$" (regexp nomatch)
|^||beginning of line|
|[0-z_.-]||character class containing 0-9, a-z, A-Z, underscore, period and hyphen|
|+||one or more of the preceding|
|@||a literal "at" sign|
|\.||a literal period|
|$||end of line|
Suprtool can help make you more productive.
CI variable substitution has been among the most popular enhancement requests in Suprtool history. This feature was included in the 4.3 update last April.
Variable substitution is great, because not only can it simplify some common tasks, but it opens Suprtool up to doing other interesting things. For example, it is now quite simple to have a variable in the If command. This is useful when you need to use information based on a logon session, to prompt a user for input, to customize batch jobs, etc.
get d-reports if user-name = "!HPJobname" out dreports,link xeq
:input name=UserDate;prompt="Please enter a date: " get d-reports if sale-date >= "!UserDate" out dreports,link xeq
Note: We need to prefix the Input command with a colon to tell Suprtool that we want to use MPE's, not Suprtool's, Input command.
In batch jobs, you can personalize report heading commands with the user and account that streamed the job.
list heading "Daily report for !hpstreamedby"
Because there may be some compatibility issues with existing job streams that might already be using exclamation marks, we've left variable substitution off by default. To enable variable substitution by default, put the Set Varsub On command into Suprtool's global configuration file, Suprmgr.Pub.Sys.
You can turn variable substitution on and off as needed.
set varsub on get !TheDataset set varsub off comment We need to look for the string !DELETE if action-code="!DELETE"
When creating job streams, many steps in Suprtool tasks are extremely similar. Variable substitution helps you introduce code re-usability. This cuts down on development time and helps minimize coding errors.
For example, say we need to move customer data from a production database to an archive database. The data spans many datasets, and we need to perform the same operation on a number of datasets. We can put the common repeated steps into usefiles, which have everything hardcoded except the dataset name.
get !DataSetName if $lookup(deacs,account-no) put !DataSetName,ArchDB,1,password xeq
get !DataSetName if $lookup(deacs,account-no) delete output $null xeq
Then we execute the file of commands repeatedly, once per dataset:
base store,1,password table deacs, account-no,file,deacfile,hold set varsub on comment *** Copy the deac customers over comment *** Copy the master first, then the details setvar DataSetName "M-CUSTOMER" use copydeac setvar DataSetName "D-INVOICE-CHARGE" use copydeac setvar DataSetName "D-SITE-INFO" use copydeac setvar DataSetName "D-ADDRESS" use copydeac setvar DataSetName "D-PRODUCTS" use copydeac comment *** the copy is complete, let's delete the records comment *** Delete the details first, then the master setvar DataSetName "D-INVOICE-CHARGE" use deldeac ..... etc. ..... setvar DataSetName "M-CUSTOMER" use deldeac
Users' needs are always changing; adding variable substitution into your Suprtool jobs can reduce future maintenance.
In alphabetic order: