Hidden Value (May, 1997)
Click here for TSG Sponsor Message

Hidden Value

HiddenValue details commands and programs in MPE that can improve productivity on HP 3000 systems. Get a free NewsWire "HP 3000 Always Online" cap -- submit an MPE tip to Hidden Value. E-mail your tips to rseybold@zilker.net, or fax them to 512.331.3807.

Compiled by John Burke

We recently upgraded our HP 3000 and now AUTOREPLY doesn't work on our tape drive. How do we configure AUTOREPLY for a tape drive?

Gary Biggs replies:
Use SYSGEN and issue a mdev command against that device in the IO Config section. Then do a SHUTDOWN and a START NORECOVERY. AUTOREPLY is one of the options you can specify with either the adev or mdev commands.
[Editor's note: With MPE/iX 5.5 you should be able to do this online in two steps by using the IOCONFIG utility to first delete the drive and then add it back in with AUTOREPLY enabled.]

I have a job STDLIST that the spooler won't let me touch. If I try to print it:
:print o10.out.hpspool
The PRINT command failed. (CIERR 9080)
BAD VARIABLE BLOCK STRUCTURE (FSERR 105)
What can I do to recover this file? I tried DELETESPOOLFILE, but now it's just sitting in the DELPND state.

Lars Appel of HP replies:
Try PURGELINK or the Shell's rm on the file. These should not attempt to open the file (unlike PURGE or PRINT) and thus are not affected by the bad variable block structure which indicates damage in the file's contents.

Goetz Neumann of HP adds:
We (HP) now have a Beta test patch (MPEJX51) ready to prevent the "bad variable block structure". Please check with your HP-RC. The problem comes from programs writing to a STDLIST via the bytestream file system type manager. I assume your job does something in the Posix shell or with a Posix-related utility/program. There is also a DEBUG script that can (ugly but readable) dump out the contents of the affected spoolfile(s).

To which the original questioner responded:

Yes, we are using the Samba/iX client in the job to link to and move some files from MPE to NT.

Using Reflection with an NS connection to an HP 3000, I am unable to 'paint' Block Mode (VPLUS) screens. The screen clears, the keyboard locks, and that's it! I am able to connect to the same machine via serial connection and the same applications work just fine. I am able to connect to a machine with the same client/host configuration via modem and the same applications work just fine. What could be wrong?

Chris Bartram replies:
Turn off HPTYPEAHEAD on the host. It "breaks" VPLUS applications over Reflection network connections.

I would like to know how to change the system prompt; i.e. change "MPE XL:" to something else.

To permanently change the system prompt, you must get into SYSGEN and change either or both the "logon prompt" and the "ci prompt" in the MISCellaneous subsection. You should be logged on as system manager in the SYS account.

:SYSGEN
sysgen> MI
misc> HE SYSTEM

system (sy) [userversion = x.yy.zz]
[logonprompt = max-255-characters]
[ciprompt = max-255-characters]
[enforcelogonudcs = ON|OFF]

To change any of the values you just type:

SY {command name} = {new value}
Remember to HO(ld) your changes before you exit back to the sysgen level and then you must KE(ep) the changes or they will be ignored when you exit SYSGEN.
Finally, none of the above takes effect until you do a SHUTDOWN and "START NORECOVERY" of the computer.
Of course, you can also change the CI prompt on a session-by-session basis using the HPPROMPT CI variable (usually in a logon UDC).

How do you use "brackets" ([]) related to dereferencing variables in CI programs?

Mark Bixby replies:
Generally, you put brackets around CI expressions, not just variables.
For example, you could say:

:SETVAR A B+C :ECHO The answer is !A

Or you could just directly say:
:ECHO The answer is ![B+C]

And Jeff Vance adds:
The ![...] construct allows an expression to be embedded in a command line that normally never expects an expression. For example,

:build myfile;disc=![finfo(otherfile,'eof')*2]

lets you create a new file that is twice as large as another file. The BUILD command expects a simple integer for the size of the file, and that is what the command actually receives as an argument. Before the BUILD command is executed, the CI substitutes the result of the expression into the command line.

Note that there is a difference between !varname and ![varname]:

:setvar foo "foo!!bar"
:setvar bar "abc"

:echo !foo
fooabc

:echo ![foo]
foo!bar

This example reveals that !varname recursively (or dynamically) de-references varname; whereas, ![varname] does not. ![varname] just retrieves the immediate value of varname, without further evaluation.

Note as an aside: !nn, where "nn" is an integer, is treated as referencing command number nn from the CI's redo stack. If command #nn exists, the entire command line will be substituted in place of "!nn".

I have an HP 3000 here under 5.0 with a little problem. It doesn't have a printer and I need one "short term" (meaning like now, because I need a printer to run a batch job. How can I "fake out" a printer, so that I can run jobs without them trying to open $STDLIST on an a non-existent printer.

Mark Bixby replies:
Go into :SYSGEN and define a printer DEV=LP for any unused HPIB or SCSI address on an existing HPIB or SCSI bus. Your jobs will spool just fine even if the printer is offline or even bogus in this case.

I got the most amazing file system error today:

WARNING!!!DATA READ FROM FILE IN QUARANTINE (FSWARN 516)
This is coming out of Speedware, so I don't have a lot of control, but do you have any idea what it may be?

HP's Pete Crosby replies:
A file is quarantined on 5.5 when subsystem dump is enabled and a problem with the structures related to an open file is encountered. A subsystem dumpfile is created and the file is then quarantined, which allows only READ access to the file.

FSCHECK has 2 new commands on 5.5. QPURGE will purge file objects in quarantine; QDISPLAY will display information regarding file objects in quarantine.

Other than reading the data and creating a new file, I don't believe the original file can ever be made write-accessible again. All of this is designed to allow a more resilient system and reduce the number of system aborts, where possible.

What is going on here?
:SETVAR TYPE "T"
:PURGE BUTYPE
:FILE BUTYPE;REC=-1,,F,ASCII;DISC=1;SAVE
:ECHO !TYPE > *BUTYPE
The CI cannot write to output file. (CIERR 9096)

Randy Medd and Stan Sieler reply:

You can do: echo !type> *butype
but not: echo !type > *butype
The critical difference is the space after "!type" in the failing example, and the lack of the space in the good example. Apparently, the CI doesn't strip trailing blanks prior to writing to the output file. Thus, the first example is a 2-character write, which is larger than the file can handle!

Some months ago, I saw an note on the Internet about putting an HPIB adapter into an HP 3000/9x9KS. I've tried this, but on our system it didn't work (the card wasn't even recognized). What did I do wrong? Do I have to have specific firmware on the HPIB adapter (it's an old 27113 [datecode 3012] taken out of a 922 LX)? Do I have to change dip switches or something ? [Editor's note: HP's official position is that HP-IB is not supported on the 9x9KS servers.]

Steve Dirickson replies:
The hardware that works with our 959KS box is the combined HPIB controller + CIO adapter card from the 957 that it replaced. I haven't checked the actual HP part numbers on the hardware, but SYSGEN knows these two pieces as

io> lp 10/16/4
PATH:  10/16/4                   LDEV:
ID:    HP19744A                  TYPE: CA
PMGR:  SPECTRUM_CIO_CAM       PMGRPRI:     6
LMGR:                          MAXIOS:     0

io> lp 10/16/4.0
PATH:  10/16/4.0                 LDEV:
ID:    HP27113A                  TYPE: DA
PMGR:  HPIB_DAM               PMGRPRI:     6
LMGR:                          MAXIOS:     0
The HPIB printer in use is

io> ld 6
 LDEV:     6  DEVNAME:         OUTDEV:        0   MODE:
   ID: HP2564B                 RSIZE:        66   DEVTYPE: LP
 PATH: 10/16/4.0.1             MPETYPE:      32   MPESUBTYPE:  9
CLASS: LP

I [Steve] made no changes of any kind for the switch; I just pulled the CIO+HPIB card out of the 957, plugged it into the 959KS, replicated the SYSGEN information, and UPDATEd.

Here is the configuration from a 959/200KS with a 7978A HPIB tape drive attached.

PATH:  10/4/8                    LDEV:
ID:    HPA1741A                  TYPE: CA
PMGR:  SPECTRUM_CIO_CAM       PMGRPRI:     6
LMGR:                          MAXIOS:     0

PATH:  10/4/8.0                  LDEV:
ID:    HP27113A                  TYPE: DA
PMGR:  HPIB_DAM               PMGRPRI:     6
LMGR:                         MAXIOS:     0

PATH:  10/4/8.0.0                LDEV:    8
ID:    HP7978A                   TYPE: TAPE
PMGR:  TAPE_7978_DM           PMGRPRI:    10
LMGR:  LOGICAL_DEVICE_MANAGER  MAXIOS:     0

I'm attempting to put our new 939KS on the network. I get a "missing DADCONF.NET.SYS" message after doing "NSCONTROL START". I believe I've gotten through all the pertinent NMMGR screens, validated them and successfully did a "NETCONTROL START". Any ideas?

Jim Knight replies:
Stream the JCONFJOB.NET.SYS job and restart the network. This will probably solve your problem.

Using only MPE/iX 5.0 FOS, can you restrict a user to only one logon at a time; i.e. so Joe.anyacct can only be logged on to one terminal or PC at a time?

Paul Christidis replies:

In your logon UDC enter the following:

...
....
if hpjobtype = "S" then
  echo tell &
  !hpjobname,!hpuser.!hpaccount Someone is using your signon. >z212z
  z212z > $null
  if cierror <> 1620  then
    echo ****
    echo Multiple logons are not allowed..
    echo ****<
    bye
  endif
  purge z212z,temp > $null
endif
....
....

Does anyone know how many volumes can be added to a volumeset? We are going to attempt to add 32 more disks to ours (16 primary and 16 mirrors) bringing our total from 96 (48 primary, 48 mirrors) to 128 (64 primary, 64 mirrors). We do realize that this is an extremely large volumeset, but it only contains one application.

Scott McClellan of HP replies:
The maximum number of volumesets is 255. The maximum number of volumes in one volumeset is 255. The maximum number of volumes (TOTAL) on a given system is 255.

A mirrored disk obviously requires two volumes, so the maximum number of mirrored pairs is less than 128 (note: you cannot mirror the system volumeset).

We have a funded R&D effort to increase most of the above limits. This will be submitted to a "future release of MPE/iX" -- probably not available until the mid '98 timeframe (though release schedules that far out are subject to change). The new limits will be much higher with one major exception -- the maximum number of volumes in a volumeset will remain 255. For one thing, this is a very difficult problem to solve in a backward compatible manner. For another, we do not want our customers putting that much data in one volumeset anyway. The disadvantages from a high availability/disaster recovery point of view are pretty obvious.

We are now trying to get a new procedure working. This procedure is a job that does several :DSCOPYs across some very unreliable lines. After each :DSCOPY, by checking the value of CIERROR, we can know if the copy was successful or not. If it was not, we would like the job to re-STREAM itself some minutes later to continue until the transfer is successfully completed. How can a job stream, which only exists as a temporary file, access itself?

John Archer, Larry Boyd and Lee Gunter separately reply:
Rather than worry about re-STREAMing the jobs, build the file transfers inside a "while...endwhile" loop, pausing for about 15 minutes if the transfer is unsuccessful. The loop can terminate either by a successful transfer or after a time-of-day limit has been reached.


Original material Copyright 1997, The 3000 NewsWire. All rights reserved.