Back-to-Basics: Where (R83 style)
Mutli-value Solutions - Nov '97
Nathan Rector
Natec Systems
nater@northcoast.com
http://www.northcoast.com/~nater/
The WHERE statement is a good tool to use to track the use of your system, or to find problems ports when your system starts to slow to a halt. Last month we covered the Advanced Pick style WHERE statement, this month the R83 style WHERE statement is covered. If you missed last month's article, it is available for download from the Web site http:\\www.northcoast.com\~nater\Solutions.html
The WHERE statement shows the activity on each port currently logged on and what the port is currently doing. With this tool you can keep your users from sitting at TCL or doing things in the debugger. Although, the R83 style WHERE statement needs translation to understand it's output, it has the same capacities as the Advanced Pick style.
There are 2 pieces of information to keep a close watch on: the PIB status, which tells the user what the current status of the port is, and the 'Return stack content', which tells the users what abs frames are currently running.
The PIB status column (third column) will tell you if the port is at the system debugger, or how it is currently responding too.
The 'Return Stack Content' (fifth through eighth columns) is the most useful when trying to find the port that is causing the system to slow. It displays the current frames that are processing on each ports.
PIB Status (first 2 digits):
7B or FB - The process is currently outputing information.
7D or 6D - the process is currently recieving information
5F - the process is currently waiting for disk I/O
7F or FF - the process is active or ready to be active.
3F or BF - the process is sleeping
PIB Status (Last 2 digits):
30 - Normal operation
B0 - in process of logging on.
Frame definitions:
1 - System Debugger
2, 5 - TCL
6 - Terminal I/O
7 - Disk I/O
13-16 - Editor
33,34 - Overflow Handling
35,36 - Tape I/O
40 - Logon
41-46 - PROC
48 - Group Locks
53-70 - ACCESS compiler
70-120 - ACCESS List
121 - WHERE
127 - Overflow table
165-183 - Spooler
190-199 - BASIC compiler
200-220 - File Save
220-260 - BASIC runtime
300-400 - Usually JET
Port to display:
user-id = Output ports that are currently logged on under this user id
"Account" = output port that are currently logged onto this account
port#{-port#} = output all ports that meet this range of ports
options:
h = suppress the heading
l = display status for each 'pushed' level
n = no pause on screen output. This keeps the output from pausing at the end of the page requiring the user to press RETURN to continue.
p = send output to printer
z = Display all ports logged on or off. If it is used with a specific
:where
-1- -2- -3- -4- -5- -6- -7- -8-
*000 0320 FF30 228.5FD
001 0340 BF30 170.219 170.097
003 0380 7DB0 1.20D 9.2B5 71.57C 72.107