Hidden Value – July 2000

 

Q: Is there a way, once I've added a default router to my HP3000, to make it active without a re-boot?

A: Chris Bartram and John Burke replied:

Sure.

:netcontrol update=internet;net=LAN1

(substitute the name of your lan interface for LAN1)

Q: If I'm using ">>" to redirect a file in Append mode, is it also neccesary to have a file equation with ACC=APPEND, or is that a "double parking" traffic offense?

A: Jeff Vance replied:

AFAIK, there is no need to use ACC=append if you are also specifying ">>filename". My preference, when using file equations as part of CI I/O redirection, is to specify the minimum needed, e.g., just ;SAVE or ;DISC=nnn etc.

Q: I was just working with logtool and I got the message:

*** WARNING: SYSTEM LOGGING IS SUSPENDED (LTWARN 452)

Does anybody know how to get it going again?

A: Ed Stouder replied:

It depends on why it stoped. "resumelog" or "switchlog" may fix it.

Did you do a reload or restore to SYS not long ago? If so purge the logfiles :PURGE LOG####.PUB.SYS then try the resumelog. What can occur is that you already have a LOG#### that is the same number as the next number in the sequence and the system can't create it.

Q: When I do a full backup I do STORE @.@.@;*TAPE;SHOW;DIRECTORY. Do the files on tape include all HFS files? If so, will RESTORE *TAPE;@.@.@;be sure to restore them back to their original directories? Is it possible to do restore *tape;/usr/local/bin/unzip;show for example? Can you view them from the $stdlist backup or are they hidden and assumed to be included?

A: Denys Beauchemin replied;

They are there. The output listing should include all the HFS files.

Q: I have an HPIB 7980 tape drive. I removed the reel, but when I do showdev tape, it still shows as if it was still mounted. How do I reset VOLID?

A: James Reynolds replied:

DOWN ldev # and then UP ldev# and that should clear it up.

Q: I have an issue to resolve where a customer is using IMAGE/SQL to update an image database. I don't think there are any space issues on the IMAGE side, but when they try to fire about 350 individual insert statements to one dataset, the program aborts. If they do less than this in one attempt, it is fine. They DON'T commit the transaction until the end. A number of data sources are involved, so this needs to complete as one transaction.

We tested the front-end of the application, by pointing it at an Oracle database, and it worked, it only fails going to IMAGE/SQL. Unfortunately we don't get any errors back from IMAGE/SQL though they may be swallowed by the application.

Are there any resourse/working area size issues that might be causing this abort?

A: B T Vikram Kumar replied:

If it is pre-6.5, there can be two limits:

1. Each transaction can be only up to 4 MB. However, when the transaction size becomes more than this, one should get a 'Stalled Transaction' message, and the transaction will be automatically rolled back.

2. There is a fixed limit for the transaction manager (XM) log, which is 64 MB. When there are many open transactions in the system, this log file also gets filled up. When the total log size reaches about 32 MB (since we may rollback all transactions), you will again get another 'stalled transaction' message, and IMAGE rolls back all transactions.

In either case, one should get the stalled transaction message before a process abort.

The above limits have been increased in 6.5. The new limit for transaction size is 32 MB. The default size for XM log size is still 64 MB. However, this can be configured to higher values using VOLUTIL. See the 6.5 Communicator article 'Large Transactions for IMAGE...' for further details.

To which someone questioned, when are you going to stop the program from ABORTING?

And Vikram replied:

Are you referring to the process abort after stalled transaction? Or is there any other program aborts happening?

To address the former, there is a new DBCONTROL Mode-18. If this call is made before the start of a transaction, then when the tranasction grows to about 28 MB in size, IMAGE will send out a soft limit warning message and inhibit any fresh put/delete/updates. On receiving the message, the application can either commit or rollback the transaction and proceed. In this way, one can prevent an individual stalled transaction. However, if there are too many large open transactions and the XM log size has not been increased, all the open transactions will get the stalled transaction message and get rolled back.

Q: I get errors if I define my detail datasets prior to the master datasets that their search items reference. Is there any way around this? If not, why is this limitation imposed?

A: Brian Duncombe replied:

K.I.S.S. In the "good" old days when computers had less disc space than we now have main memory, one-pass compilers were quite common.

Many people follow the practice of defining all manual masters followed by all automatic masters followed by all details and thus never run into the problems you are encountering.

Alfredo Rego added:

IMAGE's requirement that a path's master dataset must come before the detail detaset is for DBLOAD's sake, as enforced by DBSCHEMA. DBLOAD loads datasets in sequence. If a detail dataset with a million entries has a path to a MANUAL master, then such manual master must be loaded BEFORE the detail (otherwise, DBLOAD would get lots of errors because the necessary master entries would not exist).

Automatic masters don't present this problem, because they are not unloaded by DBUNLOAD. Automatic master entries are created on the fly at DBLOAD time.

So, there is no reason to include automatic masters in the restriction. But there are many things that happen without reason.

Q: I am tring to create an IMAGE/SQL environment that includes several image databases. I have a job with a WHILE loop to attach each of the databases. The user and account on the job card is the owner/creator of all the image databases and the ISQL DBE.

Everything works OK until it tries to attach a DB that is open. The following error is generated:

File System Error on MYDTY.MYDRAAW.ACCT (ATCERR 32207,FSERR 48).

The IMAGE databases are always opened in either mode 4 or 6. I suspect that when IMAGESQL is trying to ATTACH the database it is attempting to open it with mode 5. There are over 30 of these databases and they are accessed frequently, so it will be difficult to find a time when they are all free.

Anything I can do?

A: Bill Cadier replied:

The problem is caused by the fact that the "AOPTIONS" used by ATCUTIL "SET TURBODB" command conflict with the AOPTIONS used to open the database in modes other than 1 or 5. There is an SR filed on this, 5003-225409.

I do not find that it has been fixed in any newer release of IMAGE/SQL. It could very well be due to the fact that it cannot safely be fixed.

The listed workaround is, unfortunately, to ensure that the database is not being accessed or is not being accessed in any mode other than 1 or 5.

Q: My understanding is that IMAGE/SQL does not support aliasing column or table names in a select statement.

select field as 'newname' from table as 'mytable';

or

select "newname" field from "mytable" table;

Is this correct? Is this an SQL version enhancement that IMAGE/SQL has not caught up with?

A: B T Vikram Kumar replied:

As of now Allbase/SQL and IMAGE/SQL does not support aliasing. However, the lab is working on a solution to support aliasing.

Q: Can I have "openq @" in my sysstart file, or do I need to have a line for each ldev (like I currently do, which amounts to 40 lines and now I need to add more printers)?

A: Doug Werth replied:

OPENQ is a valid SYSSTART command and is usually recommended for systart in the form OPENQ LP.

OPENQ @ is not substitute for an OPENQ of each individual device class. OPENQ @ and SHUTQ @ only manipulate a flag that MPE uses to determine if spooling to ANY (not EVERY, but ANY) queue is enabled and disabled. Whereas an OPENQ devicename will enable/disable spooling to an entire device class. (With that said, most printers, by default, are initially spooled based on their respective sysgen/nmmgr configuration.)

Q: I have started to receive a error when I grep for a string. The error is

$ grep -i "pmtccode" ../SRCLIST/*

**** Illegal instruction address (TRAPS 56).

ABORT: GREP.HPBIN.SYS

[1] + Done(139) grep -i "pmtccode" ../SRCLIST/*

1573104 Segmentation violation grep

$

Any ideas about what I have done to myself?

A: Randy Breitfelder, Ken Hirsch and Gary Paveza all replied:

The problem is the length of the command line generated.

Ken Hirsch suggested:

You can use this to work around the problem:

ls ../SRCLIST | xargs -l50 grep -i pmtccode

which will do 50 files at a time (you can try a different number, of course).

Gary Paveza suggested:

You should be able to bypass this problem by specifying each file that needs to be greped using a find command:

find /SRCLIST/ -print | grep -i "prtccode

This type of thing often comes in handy in unix as well when using wildcards which can cause the command line to become too long for the shell to handle.

Q: CQ "*FIND1*" TO " YMDEFF-AUTH >= '&(GET "CMFIRST")' " IN ALL

is causing an abort in EDITOR. The abort message is "Program terminated in an error state. (CIERR 976)". Is there anyway that our intent can be accomplished under EDITOR?

A: Doug Werth replied:

Use a forward slash as a delimiter instead.

CQ /*FIND1*/ TO / YMDEFF-AUTH >= '&(GET "CMFIRST")' / IN ALL

Q: Can anyone explain the following behavior of the MPE/iX command interpreter?

:SETVAR X 1
:ECHO ![X = 3 AND X = 2 OR X = 1]
FALSE
:ECHO ![!X = 3 AND !X = 2 OR !X = 1]
TRUE
:

Of course these expressions don't represent anything useful, but it seems to me that both expressions are essentially equivalent and both should evaluate to TRUE. It is behaving like the OR operation is taking precedence over the AND operation in the first expression. I have been able to replicate this behavior on both flavors of MPE that I have available - MPE/iX 5.5 PP6 and MPE/iX 6.5.

A: Jeff Vance replied:

This is a CI bug and is also demonstrated below:

:calc x=3 and x=2 or x=1

FALSE

:calc 1=3 and 1=2 or 1=1

TRUE

AND is supposed to have precedence over OR in expression evaluation. I don't know why variable dereferencing affects the order of evaluation, but it seems to. I have filed SR # 8606140294 to track this problem.

Q: I am about to reload a system that was put in place before either my boss or I arrived. I have looked for the documentation for the install/update/patch procedures, but have not found anything. Does anyone know if they are on the web as a pdf?

A: A number of people replied:

The HP 3000 MPE/iX System Software Maintenance Manuals for 5.5, 6.0, and 6.5 can be found in PDF format that the following URL:

jazz.external.hp.com/papers/pdfdocs/index.html.

Q: What am I missing here?

MPE/iX: HELP XOR

Syntax: XOR

Defn: A CI evaluator function that performs a logical exclusive OR operation.
Example: 7=7 xor 5=5
Result: TRUE

MPE/iX: SETVAR A 7=7 XOR 5=5
MPE/iX: SHOWVAR A
A = FALSE
MPE/iX: SETVAR A 7=7 XOR 5=4
MPE/iX: SHOWVAR A
A = TRUE

A: John Pickering replied:

Looks like the HELP text is wrong.

[Editor's note: Better the description is wrong then the implementation.]

[Editor’s note: Usually we do not deal with questions involving third party products, but I thought I’d include this one since it demonstrates for those not familiar with MPEX just how powerful a tool it can be.]

Q: Is there a way to set a variable that would contain the database’s high water mark? I have MPEX but can't seem to figure this out.

A: Dave Lukenbill replied:

%SetVar HWMark VEFInfo("Dataset.Group.Acct").DBSetHighWaterMark