theSupport Group inc.
Sponsor Message


Hidden Value details commands and procedures in MPE that can improve your productivity with HP 3000 systems. Get a free NewsWire HP 3000 “3000 for 2000” cap — submit your MPE tip directly to us here at the NewsWire. Send your tips to, or fax them to 512.331.3807.

Edited by John Burke

I was doing a final bit of Y2K testing last week and noticed we had the !HPYEAR variable in a jobstream that renames some files. I realized that the HPDATE and HPYEAR variables drop any leading zeros but did not expect this for HPYEAR. Oops. Example: !HPMONTH!HPDATE!HPYEAR used on 01/01/99 returns 1199. But on 01/01/00 and 01/01/01 the variables returned 110 and 111 respectively. How can I fix this? We are running MPE/iX Version 6.0.

Paul Christidis replies:
You could use something like
setvar filename “X” + RHT(“0!hpmonth”,2) +
RHT(“0!hpdate”,2) + RHT(“0!hpyear”,2)

HP’s Jeff Vance adds:
On MPE/iX 6.0 Express 1 you can use the new HPYYYYMMDD string variable. On the above date you would get:
HPYYYYMMDD = 20000101
An advantage of using this new variable versus concatenating the full date from HPYYYY + HPMONTH + HPDAY, is that you do not need to be concerned if your job is running at a day, month or year boundary. The concatenation approach results in the wrong final date if the day rolls to the next month in the middle of the equation.

How can I suppress those pesky expression results messages?

Jeff Vance replies:
I skimmed the 6.0 Communicator technical CI article and I did not find a reference. (I was sure the enhancement was documented there, but maybe I missed it).

From my CI talk at HP World on the Jazz Web server ( papers/HPWorld_99/CI/), slide 19 shows the enhancement to the HPMSGFENCE variable and a few notes.

A value of 8 suppresses “false” commands, meaning those commands that were not executed by the CI. A value of 16 suppresses “false” commands plus the “*** EXPRESSION true/false” messages.

What do these messages mean?
9:53/#J28/111/stat on “/etc/bootptab”: No such file or directory
They are caused by the JINETD job, and are repeatedly displayed on the console of every server that I have JINETD running on.

Fred Metcalf and Mark Bixby reply:
I would do the reverse of the section “Adding the BOOTP server to the inetd configuration”, Chapter 4 - The BOOTP Service, in the manual “Configuring and Managing MPE/iX Internet Services”.

Edit INETDCNF.NET.SYS and place a pound symbol(#) and spaces in front of the line:

bootps dgram udp wait MANAGER.SYS /SYS/NET/BOOTPD bootpd

Save the file and exit the editor program.
Signal inetd to reread the configuration file by entering the following command at the CI prompt:

Why does the following command file need a CONTINUE before the LISTACCT and LISTF commands but not before the LISTFILE command? Should the LISTFILE command exit the command file like a failed LISTACCT and LISTF command if it does not have a CONTINUE? Is this a bug or a feature? We are on MPE/iX 6.0 PP1.

setjcw cierror 0
listacct garbage > $null
echo !cierror
setjcw cierror 0
listf @.@.garbage > $null
echo !cierror
setjcw cierror 0
listfile ./GARBAGE > $null
echo !cierror

Erik Vistica and Jeff Vance reply:
Feature, in my opinion.
> setjcw cierror 0
> continue
> listacct garbage > $null
sets HPCIERR to 909. Note CIERROR = abs(hpcierr). This is an error, so the CI will terminate in a job or exit a UDC/script.

> continue
> listf @.@.garbage > $null

This is the same error, so the CONTINUE is needed. Note that LISTF of a name component that contains wildcards, and none match is a warning, not an error. For example, listf @.@.garbage@ would have produced CIWARN 431 (hpcierr=-431, warnings are negative and errors are positive.)

> listfile ./GARBAGE > $null

LISTFILE of any syntactically legal name will not produce an error (maybe a warning but no error), thus no CONTINUE is needed. Why is LISTFILE different from LISTF in this regard? Since LISTFILE processes a list of filenames (file1,file2,...fileN) we didn’t want the command to stop if, say in the above list, file2 did not exist. Instead, you’d get a warning and the command would continue to process the next file in the list.

[Editor’s note: This next one comes up often enough it bears repeating.]

How can I create a command file that efficiently reads each record of a flat file, performs some processing and then reads the next record?

Suppose MYFILE is the flat file and CMNDFILE contains the following CI code:

setvar eof finfo(HPSTDIN,’eof’)
while setvar(eof,eof-1) > 0 do
input record
...<statements to process the contents of the record variable>
deletevar record,eof

:cmndfile < myfile
will open MYFILE only once and process the contents record by record.

I recently acquired an old 917DX, and after powering up the system I’m receiving a constant display of “WARN E040” and “WARN EF40” flashing again and again in the location where the function key labels are displayed. I have not seen this warning before and it does not allow me to display my function key labels at all. How can I reset this, or is there somewhere else I should explore?

Tom Brandt, J Norbut and Doug Werth reply:
The WARN E040/EF40 messages are telling you that the internal batteries are charging. The message will stop once the batteries are fully charged.

Where can I find a free utility to copy DAT tapes? Obviously, STORCOPY in TELESUP doesn’t work (at least for NM :STORE tapes that I’ve tried). Is there some freeware I can snag from a URL?

Joe Geiser replies:
TAPECOPY on HP’s Jazz Web server is just what you’re looking for! I use it quite a bit these days and recommend it wholeheartedly.

Stan Sieler noted:
The last time I checked, TAPECOPY was using FREAD/FWRITE, which means it can’t copy all STORE tapes, i.e., those created with MAXTAPEBUF have a record size of 32768 (according to “HELP STORE,ALL”), and the biggest record the file system will handle is 32766 bytes. Has it been updated to handle bigger records?

Our free TAPETAPE program: ( are/#TAPETAPE) can handle records larger than the file system max.

Finally, Denys Beauchemin adds:
You can visit for SLTCOPY and other free utilities for the HP 3000.

I am hooking up a new DTC inside my 927LX chassis. I see what I need to do: take the terminator off the t-connector on the second DTC, hook up my cable to the second and connect to the new DTC and put the terminator on the other side of the t-connector on the new DTC. Can I do that while the system is up and users are on? Can I configure the DTC while the system is up and users are on? Does it matter whether the the DTC is connected before I start configuring it?

Wesley Setree replies:
You can configure and hook up the DTC while people are on. I would suggest getting it installed in the cabinet, configuring it on the system and then hooking up it to the network. The network line will be “down” during the time that you hook it up to the new DTC, so try to make that connection as quickly as possible. In other words, the network traffic will stop until the connection is restored. You can do that while people are logged on; they will just notice a period of “no activity” while the connection is broken. It usually takes me about 5-15 seconds to get the connection re-established, and most users don’t notice it.

Jeff Kell adds:
Breaking a network connection is no worse than a router dropping a packet over a serial line (which happens a lot). The protocol (TCP) will recover. It can cause problems with UDP/ICMP and connectionless protocols. But it is all timing. Are you actively doing a transfer over the socket? How long are you disconnected? Are you connecting to another subnet? If this is the case, if you have been idle long enough, you may require an ARP by the router, and if that fails, results in ICMP unreachable and the connection is toast.

The biggest danger to the 3000 (unlike any other platform I’ve run across) is that if you break connection between the 3000 and a configured gateway long enough, the gateway gets marked as down and it never comes back automagically. You have to manually do a ‘gateup’ in That will spoil your day in a hurry, especially if you have only one LANIC for DTSLINK and your TCP LAN.

I’ve done things to a live network that would make your skin crawl. It can be done, but once in awhile, you get burned. Be careful and be sure you have all of the possibilities covered, especially in a switched environment (where MACs get tied to ports), where you can get burned in a hurry.

I have a job that runs daily that creates several files for transfer. It blows up about every six months or so due to file size increases. I want to replace the DISC= statements so DISC equals a calculated setvar based on the size of the DB2PRV3 file, say
sizeof DB2PRV4 = sizeof DB2PRV3 * 1.
(an extra 10% for margin of error) Can I get some tips to help me with the syntax?

Jeff Vance and Paul H. Christidis reply:
You can do something like this:
:build DB2PRV4;...;disc=![finfo(“DB2PRV3”,”eof”)*110]...< br>
I’m making a tar file (from the Posix shell) of ASCII files arranged in directories and sub-directories. Then I ftp the file to a PC or Unix workstation. Doing tar xvf there (on Unix) gives me the error message:
x mytar, 0 bytes, 0 tape blocks
x mytar/mydir, 0 bytes, 0 tape blocks
tar: directory checksum error
What is the problem? Do I have to issue some special flags while running tar?

Lars Appel and Danny van Delft reply:
One potential issue that comes to mind is that MPE/iX 5.5 tar adds MPE specific file attributes in some kind of Posix-compatible way (extra /tmp/Xattributes.N files). If your Unix machine does not like those, you might try adding -A when creating the tar archive (to drop these MPE attribute files).

I’m trying to upload a file, via WRQ’s Reflection, over a modem dialup. I’m dialed into ldev 21, so this means I’m not coming in over a DTC, but the internal mux port.
Symptom: Reflection says “Host not responding.” But, the host received the “RUN PCLINK2.PUB.SYS” command and properly executed it and is running PCLINK2 [It’s saying: (#@#@#@)] I believe I’ve tried the obvious, and a fair amount of the non-obvious. How do I get the upload performed?

Stan Sieler supplied both the question, and ultimately the answer:
We’ve gotten it going by specifying:
transfer to HP 3000 over X.25
Of course, we aren’t using X.25, so this is annoying not to mention rather non-obvious.

We got this error in one of our batch programs:
Could someone please explain exactly which limit we’ve hit? A SHOWLOGSTATUS shortly after showed 119 users of the particular log file.

Lee Gunter replies:
This is a configurable limit in SYSGEN:
>ulog <usersperproc> <— insert the desired number of users per log process


When trying to load a 1994 DDS tape, I got the following:
LDEV 7 I/O error ignored during AVR. I/O status %74
Vol (unlabeled) mounted on LDEV# 7
When I tried to restore from the tape, the error returned said there was no store label. Tried cleaning the drive and nothing changed. Is this tape really done, or are there other options?

James Reynolds and Keven Miller reply:
These errors are usually the result of trying to read a tape that was created using hardware compression on a drive that does not support hardware compression.

Giles Schipper adds:
If it’s not a compressed tape, you could have an alignment problem.

Several years ago, a customer had a disk drive failure that required replacement and subsequent re-install from backup. After disk replacement by HP, previous night’s backup (with SLT included) was mounted on DDS-1 drive. AVR error showed on console. It was obvious this tape could not be read — even by the same drive that had created it only 18 hours or so earlier.

Reverting to an earlier backup was not an option.

Long story short — tape drive was replaced with DDS3 drive. Install started and completed without a hitch. I have seen similar situations on a couple of other occasions.

[Editor’s note: another good reason for running CHECKSLT and VSTORE on any tapes you create.]

I recently acquired a used 957RX. My batch jobs sit in the wait state and never run. Interactive sessions work, networking works, OS is HP3000 C.60.00. The only thing I see that I’m not sure of is that LDEV6 (LP) is UNAVAILABLE and, therefore, not spooled. Could this be hanging the jobs up? System is configured for a HP2567B on LDEV6 Path 52.8.0 but I don’t have one physically attached.

Robert Schlosser, Andreas Schmidt and Connie Samuel all reply:
Do an openq LP and put this in your SYSSTART file.

Is it possible to have one MPE spooler that services multiple printers? For instance, I want to spread the load of one of our laser printers over two. All the print jobs would go to device LP06, which would then feed the spool files to two printers. Both printers are network printers.

Fred Metcalf, John Hornberger and Glenn Mitchell reply:
Use SYSGEN or IOCONFIG to add a device class “LP06” (using your example) to each of the printers that you want to share printing duties. As long as your output is directed to LP06, the first available printer will start printing that output. No changes are needed in the NPCONFIG file, assuming both printers are already defined.

How do I ping, or can I even ping, an address from the HP 3000?

Randy Schleicher and Joseph Norris reply:
With the right capabilities (NA and NM) you can run PING.NET.SYS and it will prompt you for the IP address, packet size and number of packets you wish to send, or you can simply PING.NET.SYS “nnn.nnn.nnn.nnn” (the IP address) and it will continually ping until you hit Ctrl-y.

[Shane Devereaux and I both suggested the more feature rich (includes ping-by-name capabilities) Several people, include Doug Werth, Patrick Santucci and Chris Bartram all passed along command files to call ping or nettool (check the archives if you are interested).]


Copyright The 3000 NewsWire. All rights reserved.