What's Up DOCumentation
Robelle Consulting Ltd.
8648 Armstrong Rd., R.R.#6
Langley, B.C. Canada V3A 4P9
Telephone: (604) 888-3666 Telex: 04-352848
Fax: (604) 888-7731
Date: June 20, 1989
From: Robert M. Green, President
David J. Greer, Research & Development
Michael C. Shumko, Customer Support
To: Users of Robelle Software
Re: News of the HP 3000, 1989 #5
What You Will Find in This News Memo:
News Tidbits
Electronic Mail at Co-Cam
Technical Tips
VESOFT and ROBELLE: the "/%" Connection
Quick Reference Guide to MPE XL Intrinsics
Improving MPE XL Performance by Suspending Programs
About Robelle
Robelle Products: Problems, Solutions, and Suggestions
News Tidbits
MPE XL Performance Tools. There are now a few TELESUP tools for monitoring
MPE XL systems: SCOUT shows process information and bypasses the flawed
measurement interface (look for newscout.privxl.telesup or ask the Response
Center to upload it), POET looks at all file activity and can tell you the
most frequently used files, and XL/DCP. [Dave Rochford]
Does SUE run on MPE XL? Not the one that we distribute. Rumor has it that
Stan Sieler has a new version of SUE working on MPE XL, but may market it as
a low-cost product. We'll keep you posted. HP has a limited product called
HPGLANCE for MPE XL and another possibility is PROBE/XL, a performance
monitoring and trending product from Strategic Systems. Telephone: (206)
362-2231.
Oddball "Features" of Some HP CRTs. Ross Scroggs of Telamon reports the
following:
700/94 Terminal. If a character is typed from the keyboard in the middle of
an Escape sequence being sent from the 3000, the typed characters are
interpreted as part of the Escape sequence. While the terminal microcode is
interpreting Escape sequences, it can't distinguish between characters
entered at the keyboard and those coming from the datacomm port.
XOFF Typeahead Buffering. Some terminals have limited typeahead or character
buffering capability. When the 2392 receives an XOFF, it will store
keystrokes until XON is received. Unfortunately, what it stores is the last
seven keystrokes (that's keystrokes, not characters). So if you type ten
keys after the terminal gets an XOFF, the first three will be lost, and the
last seven will be transmitted. The 700/9x terminal is similar, except that
it stores the first 15 keystrokes, then loses the rest except for the last
seven! This did not matter much in the past, since the Classic 3000 does not
use XOFF for flow control, but MPE XL machines use XOFF/XON as their primary
method of flow control.
Electronic Mail at Co-Cam
by Michael Redmond
[Co-Cam Computer Group is Robelle's distributor in Australia and a user of
Robelle's electronic mail package, Xpress. ed]
Our Xpress user base has grown from 10 initial users in 1984 to over 150 at
the present time. As we have grown, its use has become increasingly
important as a vital means of inter-office communication. It also provides
us with a cost-effective way of keeping in contact with our Sydney office,
over 800 km away.
The growth in our Melbourne office meant that the company was virtually split
in two for over six months while renovations were being completed to our new
office. Some project teams, sales and marketing, administration and
accounts, were in one office, while other project teams, R&D and computer
operations were in another. Xpress was used to get messages to people
quickly and reliably without having to phone them up to find them not around
or in meetings or at client's offices. With Xpress you knew that messages
would be received.
Now that the Melbourne office has been united at last, we are encouraging
people to use Xpress even more. We have set up specific Xpress log-ons for
each project team member to use (e.g., the people in the administration area
log on as XPRESS.MADMIN, where the M stands for Melbourne).
Since there were some groups that did not have access to the Series 52 that
Xpress resides on -- our telemarketing division work on UNIX systems -- we
have placed a terminal connected to the Series 52 in each of these areas and
users can have access to Xpress easily.
Xpress is used by all levels of Co-Cam staff, from upper management to staff
juniors. The bulletin board is one feature that is of great value to Co-Cam.
It is used for a variety of reasons. Notice of an important staff meeting
may be followed by an advertisement for a used car. R&D use it to notify
programmers of new releases of Co-Cam software, and I use it to notify people
that a new What's Up, Doc has arrived (this notice is followed by a stampede
to my desk for a copy). All in all, the Xpress bulletin board is the best
communicator of information that we have at Co-Cam.
On the resources side of things, Xpress is a snap to manage. I have very
few, if any, problems with it. The resources it uses are minimal and the
time spent in managing the database is also very small.
Personally, I find it a great little product. I have a lot of contact with
one of my colleagues in Sydney. We swap messages daily on different topics,
and electronic mail helps us utilize our time much better than if we had to
muck around with costly phone calls or wait for the overnight mail to be
delivered.
The bring-forward file is another feature that gets a lot of use. I use it
to remind me to send out Software Renewal notices for Robelle clients, send
out monthly rental invoices, and lots of other important messages that I need
to be reminded of in the future. These messages would normally be on scraps
of paper cluttering up my desk.
Technical Tips
CRTs + Magnets = Bad. In the good old days when crts were all monochrome, it
was great fun to move a magnet around the face of the screen and watch the
the letters and words do the electronic equivalent of the Pepto-Bismol TV ad.
Those days are gone. Do not do this on a color crt: you may damage the
screen permanently.
Modify All. You have some output on your screen that you want to capture in
a Qedit file, but you don't want to re-type it all. Here's how to avoid the
wear and tear on the digits: in Qedit, type ADDQ. This puts you in add mode
but doesn't print a line number for each line to be added. Move the cursor
to the first line to be added. Pull up the "modes keys" on your HP terminal
or clone, and turn on MODIFY ALL (f2). Now just press Return on each line
that you want to copy into your file. When you're done copying, turn off
MODIFY ALL and type // and Return. That's it.
This can also be used as a REDO command: turn on LINE MODIFY (same as MODIFY
ALL but turns itself off automatically when you press Return), move the
cursor to the line to be re-executed, correct any typos, and press Return.
Easy as pi.
Adager Tip. Change automatic master sets to manual, before doing a big
detail dataset reload. This will avoid deleting and re-adding the master
entries, and is almost instantaneous. [Fred White]
How to Splice in Qedit. You can use the JUSTIFY FORMAT command to splice two
lines together in Qedit. For example,
/list 5/6
5 This sentence can be spliced
6 from two lines to one!
/justify format 5/6
5 This sentence can be spliced from two lines to one!
Remote "Batch" Sessions. In the last news memo we asked for help in solving
a problem where Qedit eats its first two command lines because it is trying
to identify the crt model of a remote session that is launched from a job
stream. Thanks for all your suggestions on how to detect this situation, but
no one has yet found a method that works on most versions of MPE. Creative
suggestions: CAUSEBREAK intrinsic, JOBINFO intrinsic, FCONTROL-39 to request
the termtype (this fails for remote "batch" sessions on some versions of MPE,
but not the most recent ones), and FFILEINFO code 60 (this does tell you that
you are connected via a DS psuedo-terminal, but not whether the originator at
the other end is a job or a session). For anyone with only a few job streams
to modify, there is an easy workaround for Qedit. Do setjcw rcrtmodel = 1 in
the remote sesion before running Qedit.
Avoiding Nested Qedits. You have a UDC "qed" to invoke Qedit, but the users
get confused and invoke it when they are already inside Qedit. How do you
stop them from falling into this trap? Modify your logon UDC to do setjcw
insideqedit = 0, then modify your qed UDC to bail out if insideqedit ever
equals 1 (as it will inside Qedit):
QED infostring
if insideqedit=0 then
run qedit.pub.robelle;parm=4;info="!infostring"
else
display You are already in Qedit!
endif
***
VESOFT and ROBELLE: the "/%" Connection
by Michael Hensley, VESOFT Technical Support
One of the most fundamental (and under-utilized) connections between MPEX and
Qedit/Suprtool is the "MPEXHOOK" facility. MPEX hook allows you to:
* Enter virtually ANY MPEX command, such as %ALTFILE, within Qedit!
:run qedit.pub.vesoft; lib=p
/%listf myfile,access
(This MPEX command shows who is accessing the file "myfile")
/%altfile myfile; flimit=eof*1.5
(Make the file %50 bigger if you just got an "Error:full")
/%print @.source; out=*lp
(Print all of the files in the group "source")
/%$cobolii myfile.source,=.prog
(Submit a job to compile "myfile.source")
* REDO (with or without changes) any of the last 1000+ commands you have
entered in your current Qedit or Suprtool session; additionally, you can keep
your "redo-stack" from one session to the next! For example, in Qedit:
:run qedit.pub.vesoft; lib=p
/:run myprog; lib=g; parm=%1024; info="this and that"
(myprog runs, aborts; you fix and re-compile it)
/,,:run BASE...
>GET...
>EXTRACT...
>OUTPUT...
>IF...
>XEQ...
As you know, the XEQ resets all of the commands (except BASE). Suppose you
change your mind and want to redo all of the above, but with a different IF?
No problem!
>,, ,.2/4 ,5 XEQ
Voila! (We haven't room here to discuss VEMODIFY on the REDO command,
increasing the size of your REDO stack, keeping your REDO stack from one
session to the next, etc; please see the MPEX Reference Manual or on-line
HELP system for complete details.)
* If you are using an MPEXHOOKed version of Qedit and Suprtool, and you have
SM capability, you can NEW and KEEP files (in Qedit) across account
boundaries; same for >OUTPUT in Suprtool!
* If you are using the new ACDs (Access Control Definitions) of MPE
V-Delta-4, and an MPEXHOOKed version of Qedit, ACDs will be preserved when
you do a TEXT/KEEP (they are normally lost).
How do you "HOOK" Qedit and Suprtool? Well, if Qedit is installed on your
system, VESOFT "hooks" it for you automatically when you install or upgrade
MPEX. From then on, if you :RUN QEDIT.PUB.VESOFT;LIB=P instead of :RUN
QEDIT.PUB.ROBELLE (note that the LIB=P is required), you will be using the
"MPEXHOOKed" version of Qedit!
What about Suprtool? If you have STREAMX, just:
RUN HOOKPROG.PUB.VESOFT; INFO="SUPRTOOL.PUB.ROBELLE"
and, from then on, :RUN SUPRTOOL.PUB.VESOFT; LIB=P. You may want to change
your UDCs for Qedit and Suprtool to run the HOOKed versions.
Quick Reference Guide to MPE XL Intrinsics
CATOPEN. Surgical - must have VM (Veterinary Manager) capability to execute
this call.
CATREAD. Gives specified feline the ability to read in the given language.
CAUSEBREAK. Initiate a random system failure.
CLEANUSL. Short for CLEAN USER/SYSTEM LAVATORY. Need LM (Lavatory Manager)
capability to execute this call.
CLOCK. Reset the Greenwich Atomic clock.
CLOSELOG. Not used anymore. Predecessor to the clothes line when clothes
were hung over a log to dry by the fire.
CTRANSLATE. Convert novels from the current native language to a
user-specified language or dialect.
DATELINE. Cause the international date line to be moved by the specified
amount.
DEBUG. Only used in projects of more than one person. Common usage would be
`Which of you idiots just introduced DE BUG in my code!'
FATHER. (Verb) Must be over 18 to use this call. (See also FPOINT).
FCHECK. Presents the bill.
FMTCALENDAR. Produces a glossy 8" x 10" wall calendar with pictures of
gorgeous men or women, depending on the gender of your logon name.
Nationality of these gorgeous people will depend on the current
setting of the LANG environment variable.
FLOCK. Specify sheep paddock number. Only valid for country sites. See
also FATHER.
FPOINT. See FATHER.
FREADBACKWARD. A dyslexic favorite.
FREADLABEL. Returns your shirt size.
FRELATE. See FATHER.
FSPACE. Like Wow Man!
FUNLOCK. Speaks for itself.
GETORIGIN. Relate theories of evolution. Currently only supports LAMARK and
DARWIN modes.
JOBINFO. Lists attributes of your current job, including your level of
incompetence, people who are after your job, and a list of people who
perform the same job much better than you do.
KILL. An underused way of dealing with other members of the current
programming team. Often used in conjunction with JOBINFO.
MYCOMMAND. Used to gain exclusive access to any command to stop other people
from using it.
PAUSE. Ask MPE to give you one minute of silence--default is ON.
QUIT. See JOBINFO.
TERMINATE. See KILL.
WHO. See FATHER.
Improving MPE XL Performance by Suspending Programs
by Carolyn Hayes of The Wholesale Club
This past February our Classic HP 3000 Series 70 machines were rolled out of
the computer room in favor of the new RISC architecture 925 and 950 systems.
The HP 3000 950 is our main production system. With 200 on-line users on
this single machine, we experienced performance problems from day one. At
night, without the on-line users, the systems flew. The throughput was
amazing. During the day, response times were terrible and users complained.
No batch jobs run on this system during the day.
HP's performance specialists examined our system, and came up with a list of
suggestions. One in particular, suspending frequently run programs, turned
our system around.
Programs can only suspend if they are created by a father process that can
handle creating and activating son processes. Qedit from Robelle, and SELECT
(a menu system from Robelle that is free when you purchase one of their
products) can suspend programs. MPEX and the SECURITY/3000 menu system from
VESOFT can as well.
Suspending programs call the ACTIVATE intrinsic to reactivate the father
rather than the TERMINATE intrinsic to exit the program. While the father
has control, the suspended program remains loaded, a dormant process on the
system. When the father reactivates it, it comes up immediately, avoiding
the costly overhead of the loader. Databases can be left open, and the data
stack is just as it was left.
We use VESOFT's SECURITY/3000 menu system, so our on-line programs were
executed as son processes. We are a TRANSACT shop, using the FASTRAN
compiler from Performance Software Group, but the steps we took to suspend
our programs will work with any language.
In our case, we selectively suspend programs based on an INFO string passed
to the program. While some menus may run a program many times a day, others
may run the same program rarely. There is no benefit to suspending a program
unless it is run multiple times from a session.
The program must determine whether it is a son process. This is done by
calling the FATHER intrinsic. If the condition code returned is zero, then
we can suspend the program by reactivating the father. The program must have
PH (Process Handling) capability to call the FATHER intrinsic.
We determine whether the program will suspend before the main logic, in the
initialization routines, where the databases are opened, variables
initialized, etc. This logic need not be repeated when the program is
reactivated. We add an additional level to repeat the main logic until the
program terminates.
If the program suspends, this loop never terminates, since the program
reactivates the father rather than terminates. This main logic routine is
re-entered instead. The program is only terminated externally, by killing
the program, or by terminating the program's father.
We leave our databases open when the program suspends, which saves the
overhead of the DBOPENs. It works best to close the forms file and reopen it
when the program is reactivated. We tried using the VTURNOFF intrinsic from
within VPLUS and leaving the forms file open, but were having some problems
with the keyboard staying locked when the line-mode father process is
reactivated.
For a program to suspend, it must call the ACTIVATE intrinsic where it would
normally exit. ACTIVATE has two parameters, the Pin and the Allow parameter.
To reactivate the father, the Pin must be zero. The Allow parameter must be
one, indicating that this process expects to be activated by its father.
The father process then takes control. When another RUN is issued against
the suspend program, the father will activate it rather than create a new
process. The program comes up immediately, just as though it were never
left.
The only price to pay with program suspension is a hefty jump in the number
of activate processes. We went from around 800 processes to nearly 1200,
with about ten programs suspending. Two of these programs account for nearly
three hundred processes. We have been told not to exceed 1300 processes on
MPE XL Version 1.2.
When the user exits the father process (in our case, when he signs off), all
the son processes are killed by MPE XL. To allow our menu-secured users the
ability to kill these suspended programs (so that the database can be freed,
for example) without signing off, we created a Program Termination menu,
which will terminate a selected program, or all programs that could possibly
be suspended (via a list of Kill commands). This is rarely needed, but nice
to have around.
We have been most aware of the benefit of program suspension after a system
failure. All the suspended processes are lost and our system's performance
is horrendous while programs are being loaded for the first time.
Suspending these few programs was the most important thing we did to improve
performance on our MPE XL system, and its effect was dramatic. The system
seemed twice as fast. The Loader overhead on MPE XL must be enormous for
this change to have made our system performance improve so dramatically.
While performance is now tolerable, it is still not lightning fast, and we
are looking forward to our upgrade to the HP 3000 955. The benefits of
program suspension will still be there, though, and we will be getting more
processing power for our money by using it.
About Robelle
Users Groups. Bob Green will be speaking at the ORERUG meeting on August
5th.
Robelle Products: Problems, Solutions, and Suggestions
Suprtool Version 3.1.1
Documentation Error: SET EOFREAD is not ON by default. Page 92 of the
Suprtool 3.1 User Manual states that the default for SET EOFREAD is ON. In
fact, it is OFF. The corrected entry reads as follows:
When you specify the GET command, Suprtool determines how many records
to read from your dataset. By default, Suprtool calls DBINFO to obtain
the number of entries in the dataset. Suprtool reads the dataset until
this many entries have been read. If you are adding and deleting
records while Suprtool is reading, some records can be missed.
Turning Set Eofread On forces Suprtool to read to the physical end of
the dataset. For hashed master datasets, turning Set Eofread On will
have little performance impact, unless the dataset is nearly empty.
For detail datasets, turning Set Eofread On will significantly slow
Suprtool down. Even with Set Eofread On, there is no guarantee that
Suprtool will find new entries that were being added as Suprtool read
your dataset, but it should find all others.
In addition, the warning message which is produced when records are added to
the dataset is misleading. The warning reads "Suprtool ignored some new
dataset entries." This leads you to believe that it is only the newest
entries that were skipped. In fact, it is likely that these new entries were
read and that older entries were skipped. Using SET EOFREAD ON will help
eliminate the potential of missing records, at the expense of longer run
times.
An Interesting Story. Why does the following Suprtool operation "hang" for a
full minute before printing anything out on the screen? (When the equivalent
FCOPY task starts printing records immediately.)
:listf slowfile,2
FILENAME ------------LOGICAL RECORD----------- ----SPACE----
SIZE TYP EOF LIMIT R/B SECTORS X MX
SLOWFILE 1W FB 10000 10000 1 10001 8 8
:run suprtool.pub.robelle
>in slowfile;out *;xeq
Suprtool does multi-record no-buffered reads, gulping down over 12000 words
of data at a time. Because the record size is one word, the very first FREAD
gets the whole file! It takes about a minute on a Micro 3000 to read ten
thousand sectors to fill up Suprtool's buffer.
DBAUDIT Version 1.9
DSSERVER Program. If you see the program DSSERVER.NET.SYS in your DBAUDIT
reports, you should be aware that this is a remote DS or NS user who is using
your database through HP's remote database access. DBAUDIT will show you the
DS psuedo-terminal number as the Logon Device, with the User name of the
REMOTE HELLO, but we can't tell you what remote program is actually modifying
your database.
*c1950a200b5g2P*p-50Y
Fortune Cookie of the Month.
Q: Is sloppiness in speech caused by ignorance or apathy?
A: I don't know and I don't care. [William Safire]