Previous Issue Index Next Issue

What's Up, DOCumentation? 2000 # 3


July 2000

From: Technical Support Department

To: Users of Robelle Software

Re: News of the HP e3000 and of HP-UX, 2000 #3

What You Will Find in This News Memo:

Internet Pet Peeve

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.

Note that this will not work for those Web sites that will not let you escape no matter what you do. Even closing the browser will not work. The way to get out of those sites is to disable JavaScript in your browser, which keeps the browser from executing the nasty mouse-trapping code. In Internet Explorer this is called Active Scripting, which you configure in the Security Zones section of Internet Options. In Netscape Navigator, JavaScript is disabled from the Advanced section of the Preferences menu.

[Marie Reimer and Mike Shumko]

Up To Table of Contents

Suprtool logo Negative EOF on MPE/iX 6.5?

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:

  1. A file whose original limit is greater than 4 GB.
  2. A file is closed by using a disposition of "truncate" (Set Squeeze On in Suprtool) (disposition parameter bits of 11:2=01, for you techie types)
  3. The truncate operation brings the limit to less than 4 GB.

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.

[Neil Armstrong]

Up To Table of Contents

MPE/iX 6.5 No Longer Supports HPIB Devices

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.

Do I have any HPIB devices?

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

Suggested Workarounds

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 and Genisys at are able to help you.

What is lost when converting printers?

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.

Jeff Vance's HPIB Testing Script

   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
   if "!entry" = "main" then
   echo *** HP-IB and FL device checker for 5.0 and later MPE/iX systems ***
   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!

   comment read the IO config file
   xeq !hpfile read <!_hpib_conf_file

   echo === S U M M A R Y ===
   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 &
   deletevar _hpib_@

   elseif "!entry" = "read" then
   comment This entry reads the IO conf file. Input is redirected to this file.
   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: &
   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: &

   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"))] &
   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)
   elseif _hpib_eof > 0 then
   comment read next record
   input _hpib_rec

[Paul Gobes]

Up To Table of Contents

MPE/iX 6.5 System Abort During Store

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.

[Paul Gobes]

Up To Table of Contents

Suprtool logo Sometimes No Progress is Better than Lots of Progress

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

[Mike Shumko]

Up To Table of Contents

Qedit logoSuprtool logo Validating E-Mail Addresses

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, 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," 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)

In English:

Character Means
^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

[Mike Shumko]

Up To Table of Contents

Suprtool logo Suprtool and CI Variable Substitution

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.

Using the Logon Session ID to Extract a User's Records

   get d-reports
   if user-name = "!HPJobname"
   out dreports,link

Prompting a User for Input

   :input name=UserDate;prompt="Please enter a date: "
   get d-reports
   if sale-date >= "!UserDate"
   out dreports,link

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.

Inside Batch Jobs

In batch jobs, you can personalize report heading commands with the user and account that streamed the job.

   list heading "Daily report for !hpstreamedby"

Variable Substitution is Off by Default

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"

Code Re-Usability

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.

Copydeac File:

   get !DataSetName
   if  $lookup(deacs,account-no)
   put !DataSetName,ArchDB,1,password

Deldeac File:

   get !DataSetName
   if  $lookup(deacs,account-no)
   output $null

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
   setvar DataSetName "M-CUSTOMER"
   use deldeac

Users' needs are always changing; adding variable substitution into your Suprtool jobs can reduce future maintenance.

[Ken Robertson]

Up To Table of Contents

Contributors to This Issue

In alphabetic order: