HiddenValue
Click here for Minisoft Sponsor Message

HiddenValue

October 1997

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 directly to the NewsWire for Hidden Value. E-mail your tips to rseybold@zilker.net, or fax them to 512.331.3807.

Compiled by John Burke

Is there any way to replace a file, for example a file of UDCs, while it is being accessed?

The Posix shell "mv" command will allow you to do just that -- "mv" stands for move. One of the undocumented features of this command is that it enables you to replace files currently in use. New accessors get the new version. Existing users continue with the old. Once the last user of the "old" version closes the file, it goes away.

The command "mv" is described in gory, if incomplete, detail in the man page. The basics in this case are:
From the shell, type

mv newfile oldfile

From the MPE prompt, type

mv.hpbin.sys "newfile oldfile"

Note that both "newfile" and "oldfile" must be in HFS syntax where case counts. If "oldfile" exists, the prompt will ask whether you want to replace it. For example, suppose you have a file containing all of your UDC definitions: UDCS.PUB.SYS.

Now, suppose you've created a new file, UDCSNEW.PUB.SYS which is an updated version of UDCS. To replace UDCS with UDCSNEW without having to use SETCATALOG and kick everyone off the system, then from MANAGER.SYS do:

MV.HPBIN.SYS "/SYS/PUB/UDCSNEW /SYS/PUB/UDCS"
The system responds:

/SYS/PUB/UDCS?

Reply with: YES, and you are done. UDCSNEW has become UDCS.

I use SPOOLF ##;SPSAVE quite often to save small spoolfiles for reprinting. How would I print these saved files?

Richard Fisher replies:
spoolf o###.OUT.HPSPOOL;PRINT

Doug Werth adds:
This will create a new spoolfile with a new SPFID replicating all of the options of the original (copies, priority, device, name). You can also override those defaults by specifying the correct parameter on the SPOOLF command. The original SPSAVED file will remain in the queue until you specifically delete it.

I restored a group of report spoolfiles from a backup tape because they had been deleted erroneously. When I restored them I put them into my home group and account. I used PRINT to get them out to the spooler, but when I actually printed them, they were missing some formatting, specifically page breaks. Is there a way to do this successfully?

Calvin Dimsha replies:
Try :SPOOLF .group.account;PRINT;DEV=xxx

Tom Freer adds:
Use this command sequence to restore spool files:
file t;dev=tape
restore *t; O0123.out.hpspool
Do not use "OLDDATE" or any other restore options. MPE will assign a new OFID to the file that you restored. [Editor's note: I've used this technique successfully many times. It demonstrates the power of the NM spooler on MPE/iX.]

Is there is a port of uuencode/uudecode for MPE?

Paul Gobes and Jeff Vance separately reply:
uuencode and uudecode are part of the Posix environment introduced in MPE/iX 5.0. The programs can be run from the shell or in MPE. The programs are in the HPBIN.SYS group.

When printing to a network printer on MPE/iX 5.5, are entries made into the system logfile for each spoolfile printed? If so, what is the layout of the log record? Presently, I produce monthly performance charts for print activity and would like to continue doing so for network-connected printers.

Doug Werth replies:
Network printing under MPE/iX 5.5 creates system logfile entries (logging event 120) that look just like the entries for serial printers.

On either MPE/iX 5.0/5.5, :BUILD ./abcdefghijklmnop works just fine. But if I add a 17'th letter, :BUILD ./abcdefghijklmnopq, I get
NS3000 IS NOT PRESENT ON THE SYSTEM (FSERR 423) Build of file "./abcdefghijklmnopq" failed. (CIERR 279) What's going on here?

Jeff Woods replies:
Quoting from HP's "MPE/iX Shell and Utilities Reference Manual Volume 2":
"Names of hierarchical directories and files located directly under the root directory, an account, or a group cannot exceed 16 characters in length." I suspect the error number should have been 426 instead of 423: HFS NAME COMPONENT IS TOO LONG (FSERR 426)

I use programs from the CSL Boeing TECHXL account. I just upgraded to MPE/iX 5.5 and now none of the programs will work. What can I do?

Kevin Sheely replies:
If you run a Boeing TECHXL account program and you receive the message that the program has not been checked out for this operating system, you can change the version level that the program checks for by running REFEREE.PUB.TECHXL.

For example: [Referee]: CHANGE DIRK.PUB.TECHXL;VUF=C.55

This would update the program DIRK.PUB.TECHXL to allow it to run on MPE/iX 5.5. Be aware that the whole purpose for the OS version check is to warn you that this program has not been verified to run correctly on the new OS. You should do this only at a time when you can test the program and make sure that it does not crash the system.

I've noticed that if I type in just a ":" and depress RETURN, I do not get the same error I used to get. Is this a bug or a feature?

Scott McClellan replies:
This is a feature (and a useful one at that) of the CI. For some historical perspective, consider that in the old days there was no redo stack (or command history) stack. Go back far enough and there was no "REDO" command either. Users got very familiar with the way their terminals worked and could use the arrow keys, memory lock, local and remote mode to create a "redo" capability. They could page back in their terminal memory to find a command they wanted to execute again, then move the cursor to that command, go into local mode, delete the prompt, then go back into remote mode and hit ENTER (transmitting the command for re-execution).

Deleting the prompt required many extra keystrokes and was cumbersome (to say the least). So the MPE/iX CI folks said "Hey that's kind of dumb! Why not just ignore the prompt and parse the command?" So they did. Since they also added configurable prompts (by setting HPPROMPT to whatever you want), they had to make the CI "smart enough" to ignore whatever the prompt is. Thus the prompt will be "eaten" before parsing the command and the command will execute without an error (assuming it is a valid command).

What is the difference between "hot plugable" (HASS) and "hot swapable" (HA disk array)?

Fred Metcalf, Steve Dirickson and Terry Simpkins reply:
"Hot pluggable" is essentially a hardware issue: the device is constructed so that it can safely be disconnected from or connected to the system without powering down either the system or device.

"Hot swappable" is the next step, where the system software (or firmware, such as on an array controller) is able to recognize and properly handle the appearance and disappearance of the hot pluggable device.

The HASS devices require Mirrored Disk/iX to become "hot swappable." You cannot mirror the System Volume Set. The HA disk arrays are "ready to go" without additional software. And the Systems Volume Set can be on HA disk arrays.

I created a command file called COPY2TST, but when I try to execute it I get:
:copy2tst
^
First character in file name not alphabetic. (CIERR 530)
What's going on here?

Michael Berkowitz replies:
The same scenario works with a file called LISTFnxx or RUNnxx, etc. What you have to remember is the order that MPE resolves something typed at the command line. First the UDCs are checked to see if it is a valid UDC. If not, then a check is made to see if it is a valid MPE command. If it's not then the validity of the file along the current value of HPPATH is checked. Finally, if it is not one of the above three, then you get "Unknown command name" (CIERR 975).

In this case there is no UDC, so a valid MPE command is looked for. As far back as I can remember (MPE 3 on our Series II), MPE will assume that when a nonalphabetic character is entered, that the preceding alphabetic characters are the command, and everything else are the parameters. So, in the above example of COPYnxxx, MPE thinks the command is COPY with a parameter of nxxx, which of course is illegal unless using HFS syntax. To get this to work use the XEQ command. :XEQ COPYnxxx works just fine, or use HFS syntax, :/ACCOUNT/GROUP/COPYnxxx also works fine.

For those of us still on MPE/iX 5.0, will there be a patch available giving us the 32-bit ODBCLink/SE driver?

Gary L. Biggs and Brian Duncombe reply:
A version for 5.0 will be made available as soon as a release vehicle is available. In addition to the ODBCLink/SE software, you will also have to update your Image/SQL (to G1.11 or later) or Allbase/SQL (to G1.15 or later).

My PC printer driver allows me to print 1,2,4,6,9, or 16 pages per sheet, shrinking the text or graphics appropriately to fit. I can also specify a border, or not. I'm looking for a way to accomplish the same thing from MPE to a LaserJet 5si without having to purchase third-party software. Can I place the appropriate PCL escape sequences into a TTUTIL environment file? If so, where might I find out what those sequences are?

Bruce Toback replies:
Unfortunately, there are no such escape sequences. The printer driver does this trick by scaling the text and graphics as they're being created, and placing them appropriately on the page. The printer isn't actually doing the work.

The Posix sort command allows sorting based on fields. I am trying to figure out if I can specify Sort keys by physical position in the Posix Sort utility. The man page only mentions the -k option (by field,position). Surely it must be possible to specify keys by actual byte position and length?

Neil Harvey replies to his own question:
Some time ago, I was lamenting the fact that Sort in Posix (and in HP-UX as kindly pointed out by Mark Bixby) does not provide for fixed position sort keys. I have worked around this vexing problem by fooling Sort into thinking that the entire line is one field by specifying the -t option with an improbable character as a field delimiter.

The following command sorts the output of a showjob command by user name, regardless of the fact that some lines have QUIET as an extra "field".

>callci showjob job=@S | grep '#S' | sort -t ! -k 1.46

This done at the Posix shell results in an alphabetic list of logged on users ‹ handy if you're looking for one in a few hundred.


Copyright 1997, The 3000 NewsWire. All rights reserved.