January 2007
<< >>
Interesting Problem (cont'd)

(Continued from page 2)
In a Native Mode MPE stack trace such as this the current point of execution in the program is usually the top line, labelled NM 0. In this case we're sitting in the "block_current_process" routine. A few lines below that at NM 5 we see "impede_process". This is definitely an impeded process, but we knew that already!

Our main point of interest is to see what our program is doing, or trying to do. Most of this stack trace, everything from line NM 12 and above, happens to be system code, or operating system procedures. Line NM 12 tells us that the program called the COMMAND intrinsic, and asked the OS to execute an MPE command.

But due to the fact that Glance can't see the internal symbols of our program, it therefore can't show us the procedure names, and we still don't know what our program is doing. We could certainly narrow it down by checking the source code for all the locations where we call the COMMAND intrinsic, but there could be many, and we don't like guessing games. So we were prepared to guide Steve through a somewhat tricky procedure that would allow him to produce a stack trace that included our program's internal procedure names.

Before we got to that, however, a couple of eagle-eyed members of our tech support team noticed the "hxtellop" procedure buried in the middle of the stack trace (at line NM b). This indicated to us that our program had passed a TELLOP command to the COMMAND intrinsic, and was trying to display some data to the system CONSOLE.

But what could cause a simple TELLOP message to become impeded? The only answer which makes sense is that the CONSOLE itself was hung in some fashion, and was not able to display messages. Therefore, any process that attempted to write to the CONSOLE also became "hung".

We asked Steve to check his physical CONSOLE. Perhaps someone had halted a listing with Ctrl-S and left it like that; or perhaps they had started typing a command and didn't finish. Steve hit RETURN at the CONSOLE and saw a flood of queued messages fly by. The system at once returned to normal, and all impeded processes cleared up, including our program. It wasn't our fault after all!

The root cause of the problem is that the MPE CONSOLE has a buffer of limited size. When the CONSOLE, for whatever reason, is prevented from displaying messages, the buffer can fill, which ultimately leads to impeding any subsequent processes that attempt to write to it. The moral of the story is that every MPE shop should include CONSOLE health as part of its standard operating procedures.


  Networking Line Printers - Ideal  

In MPE/iX release 5.5 and above, users are able to print directly to printers on their network equipped with JetDirect cards or print servers; you'll configure HP or PCL compatible line printers as (pseudo) spooled printers on the 3000 using a special config tool/command file provided with MPE. A configuration file called "NPCONFIG.PUB.SYS" contains control information for the actual printers - including their IP addresses and TCP port numbers.

HP really wants you to use JetDirect print servers for TCP/IP printing from your HP3000. The built-in network printing capability in MPE/iX 5.5 officially "supports" only HP Jetdirect products. Part of this requirement is the fact that the network printing solution makes extensive use of the SNMP network status options that Jetdirect cards support (most other network printing cards do not). A workaround when using non-hp print servers is to add a "snmp_enabled=FALSE" setting to the printer's entry in the NPCONFIG file.

To integrate the printer yourself do the following:

Step One
- Create pseudo printer LDEV in SYSGEN

1. Make sure you are logged on as MANAGER.SYS and get the ‘CONSOLE’.

2. Check that there are no recent changes to sysgen pending; if there are, the changes should be evaluated for its effect on the HP3000 System prior to making and invoking your own changes for network printing.

3. Enter


4. At the sysgen prompt (>), enter io to start the I/O configurator.

5. Define the logical device identification for each network printer that you want to add. To use the default configuration values, specify HPTCPJD as the device identification and designate the path as NONE.
(Continued on page 5)

www.resource3000.com   Resource 3000 News - January 2007