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: January 28, 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 #1
What You Will Find in This News Memo:
Tutorial on QEDIT and SUPRTOOL
More New QEDIT Features Than Ever Before
About Robelle
News Tidbits
Technical Tips
Mental Migration From MPE V to Spectrum
Robelle Products: Problems, Solutions, and Suggestions
Tutorial on QEDIT and SUPRTOOL
Spend a Day With Bob Green From Robelle
This day-long training session gives the many QEDIT and SUPRTOOL users in the
Los Angeles area an opportunity to fine-tune their skills. The day-long
format provides time to cover advanced features of the software and to answer
questions about specific user problems. Each participant will receive QEDIT
and SUPRTOOL User Manuals, plus copies of the training materials (give the
course yourself!).
The morning will be devoted to What Everyone Should Know About QEDIT,
Robelle's full-screen editor for programmers. Here is your chance to develop
maximum programming power. Learn all the shortcuts from Bob Green. You know
there are lots of features of QEDIT that you don't use - now you can learn
how they work, including those in the new QEDIT version 3.7.
After lunch (included), you will discover The Secrets of SUPRTOOL. If you
build applications using IMAGE databases, you can make them run faster. You
will learn how to use SUPRTOOL to do fast, intelligent serial processing
(extracts plus sorts). Did you know that SUPRTOOL has an interactive
database editor hidden in it? Find out how to plug SUPRTOOL right into your
own programs. Learn about SUPRLINK, the new method of extracting data from
several datasets.
Date: March 14, 1989 - all day.
Place: Beverly Hills Ramada Hotel, 1150 South Beverly Drive
Cost: $75
The QEDIT and SUPRTOOL Tutorial is sponsored by VESOFT's GLUG. To reserve a
place in the class, call (213) 282-0420.
More New QEDIT Features Than Ever Before
QEDIT is our full-screen editor for all HP 3000 computers, including MPE XL.
Since 1977 we have been steadily improving QEDIT with user enhancement
requests, but in 1988, we added more new features than ever before. If you
have never seen QEDIT, it is a complete environment for programmers,
interfacing with most software tools on the HP 3000. You can remain inside
QEDIT all day, since it supports MPE functions, including compiles without
needing to save your file, provides User-Defined Commands, and allows you to
hold tools like MPEX and Quiz suspended for instant access. QEDIT also has a
compatible line-mode, essential for batch editing jobs, so you only need to
use one text editor for all tasks.
Here is a small sample from the dozens of new features in QEDIT version 3.7:
* The TEXT command is 2 to 3 times faster and can retain user labels for
KEEP.
* Two Hold files temporarily retain lines you move or cut, or lines you
explicitly mark for later reference.
* New shorthand for "previous" file: $. You can List $, Add lines from $,
Open, Text, Use, and Verify $.
* More features for MPE XL users: RUN with XL=, links to NM compilers,
variables in IF and WHILE, and the XLTrim command to cut back allocated
disc space.
* Users of Tymlabs C or SPLASH can now use the EDITERROR command to fix
compile errors.
* QEDIT commands can be placed in User Commands, and so can WHILE-ENDWHILE,
implied RUN and %MPEX commands.
* Full-screen editing now detects DTC versus ATP automatically over NS, and
has more Cut-and-Paste functions: DD to delete, HH to hold, R to
replicate.
* For European users, shifting of Roman-8 characters in string search and
UP/DOWN functions.
* A new category of options has been added to the LIST Command to allow
listing without control codes, to three specified printers, to LaserJet
fonts, and more: Hex, Char, Octal, Include, Record, Shift.
These and other new features are fully explained in the new User Manual,
which is included on the update tape. Users may print as many copies as they
like, on a lineprinter or LaserJet, and everything in the User Manual is also
in the on-line help file for QEDIT. This year, QEDIT includes a self-paced
on-line tutorial (QDEMO) and course materials for an "Introduction to QEDIT"
class. All users of QEDIT covered by service will receive an update tape
automatically. QEDIT is fully supported on MPE XL, and there is no upgrade
charge. Trial tapes are sent with our compliments.
Distribution of 3.7 is complete in North America. Distribution to the rest
of the world is planned for late February - please be patient.
About Robelle
Florida. Bob Green will be speaking in Ft. Lauderdale, Florida, Saturday,
February 11th (honest folks, he's only there to work). This will be after
his stops in Oklahoma City and Atlanta that week.
Brussels. Marie Froese and David Greer of Robelle will be attending the
International HP Users Conference in Brussels this April. David will be
presenting a short tutorial on QEDIT and SUPRTOOL during the conference.
Australia. Mike Shumko and Kerry Lathwell of Robelle will be in Australia
for the SPARC/89 meeting (Sydney) - eager to meet our users who speak
"strine".
San Francisco. Robelle will be hosting another customer party, this time in
San Francisco at the North American Interex meeting. Stay tuned for more
details in the next What's Up Doc.
News Tidbits
Sorry, No Discount! The January '89 issue of Interact has an article,
"Increasing Programmer Productivity", on page 54. Author Gregory Diehl plugs
Robelle heavily for QEDIT and SUPRTOOL, but goes astray in the second column
"...you should take advantage of the available discount on SUPRTOOL when
purchased from Robelle at the same time [as QEDIT]." Not so. There is not,
and has never been such a discount.
Technical Tips
MPE XL Notes From SigSysMan. A :LISTF,-1 no longer displays dates in
calendar format. Instead, the date is in milliseconds from January 1, 1970
and is a 64-bit value. The current controversy raging in MPE XL concerns
access to operating system internals. HP feels the need to control
"privileged" access and will work on an individual basis with users to
construct "architected interfaces", or, if I understand correctly, customized
intrinsics. (As has already been reported elsewhere, HP has no plans to
publish an MPE XL tables manual.) This kind of secrecy inevitably provokes
the curious among us, so bits and pieces of information are already trickling
in. According to one source, a good place to start your sleuthing is with
two manuals: (1) MPE XL SE Utilities (32650-90095) contains various items of
interest such as statistics, patching and analyzing. (2) Precision
Architecture and Instruction Reference Manual (09740-90014) shows you all
about the instructions available. Getting system structures can be done by
using the DEBUGGER and typing HELP for the SYMOPEN command. Then look for a
file called SYMOS in the TELESUP account. (The group may differ depending on
the version of MPE XL.) Structures can then be viewed using the FT structure
name (the display is in Pascal format). Virtual addresses can be displayed
with "FV

, ". The key is finding whether the addresses are
virtual or code segment. [Scott Hirsh]
QEDIT, MPE XL 1.2, and OCTCOMP. QEDIT version 3.7 (new) cannot be compiled
by the Object Code Translator. OCTCOMP fails when you have a FOR loop inside
an SPL subroutine where the loop index variable is a parameter to the
subroutine. This same problem afflicts DBAUDIT 1.8. After detecting and
fixing this problem, we were able to run QEDIT through OCTCOMP and measure
the results. These tests were done on MPE XL 1.2 (beta test only), and
comparision with EDITOR is also shown. All tests were performed on the KEEP
file CICAT.PUB.SYS, which had 29,000 lines, and the results are in CPU
seconds.
CM-QEDIT OCT-QEDIT CM-EDITOR
TEXT cicat.pub.sys 20.7 sec 8.7 sec 28.8 sec
KEEP cicat.pub.sys 16.2 sec 7.9 sec 24.6 sec
RENUMber file 7.0 sec 3.1 sec 25.3 sec
String search of file 13.8 sec 6.4 sec 23.8 sec
The Object Code Translator made a big difference in these intensive tasks --
reducing CPU time by 51% to 57%. As far as on-line response time goes, we
were unable to notice any difference in screen update time, etc.
Compatibility Mode EDITOR, by comparison, was 39% to 267% slower than CM
QEDIT; we did not run tests on OCT-EDITOR, but would expect similar savings
of about 50% in CPU time.
Mental Migration From MPE V to Spectrum
by Jeff Kell, UTC Computing Services
Reprinted From SIGED Newsletter
As you are no doubt well aware, the long-awaited, highly acclaimed Spectrum
systems are officially here, available, and yours for the asking. Your local
sales representative is ready and eager to meet you with his smiling face and
new "Take the Offensive" marketing plan. Your local Smiling Systems Engineer
is ready and eager to reassure you during the "Full Upward Compatibility"
reload and subsequent "Migration to Native Mode". Your local Customer
Engineer assures you that with the reliability of the new systems, he is
destined to become the next TV model of the Maytag Repairman. But perhaps
you, like myself, feel like cowering in the corner, shuddering with fear at
the thought of jumping out of the "warm fuzzy" environment of the machine you
have grown to know and love, now being called a "Classic" machine. Well?
A tremendous amount of material has been written, published, and programmed
on the subject of "Migrating to Native Mode" in terms of your software
investment, but little if anything has been done in the area of what I shall
refer to as "Mental Migration to MPE XL". Regardless of how easily you can
move applications to the machine, irrespective of how transparently
"Compatibility Mode" can run your programs "as is", you know the beast is
just pretending to be a Classic! The next logical question to ask yourself
is just what the heck it is doing! I would like to share some of my
experiences in migrating my Series III way of thinking into the Spectrum
world.
As late as 1987, the University of Tennessee at Chattanooga had two Classic
machines to serve Administrative Computing; namely Series III systems. There
were around 64 users on the production machine using in-house COBOL/IMAGE
software with a lot of SPL utility routines. The old Series III didn't have
the horsepower to do anything fancy for that many simultaneous users, so we
had no VPLUS, no Powerhouse, no RAPID; just straightforward COBOL that was
segmented, optimized, and redefined to the point of absurdity for maximum
performance.
We originally planned to replace the 2 Series IIIs with a 930 in late 1986,
but as we now know, Spectrum just wasn't quite ready then. The final plan
was to go with a Series 52/58 combination as an interim solution, and then
follow up with the 950 when available (the delay carried us through the
Spectrum price break; we elected to get the larger machine rather than
surrender the long-awaited funds). The 52/58 systems were installed in
June/July 1987. Other than minor datacomm problems (physical wiring, MPE
V/E's unique parity, etc.) the transition from the Series III to 52/58 was
virtually flawless.
The first "migration" issue came up when we received the migration tool OCA
(Object Code Analyzer). This program scans your existing object code looking
for "migration inconsistencies" which may require source changes before going
to native mode. OCA flagged well over 250 programs! I immediately called my
Smiling Systems Engineer. The bulk of the items it had found were "COMMAND"
intrinsic calls, and it wants to be certain that you do not use any obsolete
commands or any command whose operation has changed. We use it for :FILE
equations and to :STREAM jobs, so no problem. Most of the remainder of the
OCA flags came from old COBOL 68 programs that were never recompiled; if they
use SIZE ERROR it calls some library trap routines which don't work the same
way on MPE XL. We converted them to COBOL 74 or 85 and the problem
disappeared.
In late January 1988 the time came to attend the MPE XL migration classes in
Rockville, MD. At long last, I was to meet a Spectrum face to face, and it
felt like I was about to meet a total stranger. There was no material to
read or review to try to prepare; the only MPE XL articles were sparse,
vague, and very general. Maybe Spectrum was still not ready? Maybe it was a
hoax? Maybe it's down! If you have never been to Rockville, you aren't
missing much. If you have never been there in the dead of winter, you
certainly shouldn't feel left out. But Rockville in the dead of night on a
Sunday must surely be the pits.
Monday morning finally arrived. The HP Customer Education Center is, in all
fairness, a nice place. They had heat, little personalized ID badges, your
own real ceramic coffee mug, hot coffee, and donuts. On the way to the
classroom, I passed by the machine room and peered in. There was a bulky
1000 system, a 42, a 58 with a big brown teddy bear on it (seriously) and,
off in the corner, a 930. It wasn't very impressive, just a little grey box
with a console on top and a couple of Eagles beside it.
On to class, and my assigned terminal. What the heck, let's try it.
Pressing return gave "MPE/XL:" prompt. Hmmm, :SHOWME. No luck, it burped
with "EXPECTED :HELLO COMMAND". Oh well, might as well wait for my class
account.
This class was the manager's class. All ten of us received accounts with
every capability in the book. Alright, now I can explore. A quick :REPORT
showed a TELESUP and SUPPORT account, and a :LISTF had some interesting
files. Now to get to TELESUP, we need a password. So :RUN LISTDIR5.PUB.SYS,
but it's not there. :LISTF LISTDIR again showed nothing. No matter, I do
remember the format of LISTACCT, so try :LISTACCT TELESUP. What! Now
:LISTACCT does LISTDIR format! And LISTF has ",3" and ",4" for the two LISTF
formats of LISTDIR. So why didn't anyone think of this before?
One of the first class topics was IPL, or how to boot a Spectrum. If you are
accustomed to Control-B "START", 6-8 lines of information, and a date prompt,
you are in for a big surprise. The Control-B is right, but "START" comes
later. Instead, you "RS" or "TC" (ReStart or Transfer Control) to get the
bootstrap loader, who in turn demands to know what "boot path" to use
(similar to channel number/device number for start/load/dump). The bootstrap
then fetches the Initial System Loader (ISL) who does know about "START" and
other things. Alright, I think, it isn't that bad, just a little more
complicated.
After "START" you get a message "Initialize_genesis..." first. What? Visions
of Star Trek II and the "Genesis" device flash through my mind; no,
nevermind. A few seconds later comes the date prompt, with the date and time
already correct. Great! Not only did it start up incredibly fast, it has a
real time clock. Wonderful machine. What?
Oh, it asks the date and time first (blush). Next comes a flurry of
messages, followed by a disc mount message for LDEV 1 and another note saying
"recovery in progress" followed some time later by "New and temp files
deallocated for LDEV 1" which led to a discussion with the instructor. She
indicated that MPE XL keeps a transaction log on LDEV 1 for all critical disc
operations. When the system comes up, the log is analyzed to determine if
any operations were incomplete, and if so, they are restored to their
previous state much like IMAGE rollback recovery. "But what about lost disc
space?" I asked. "It never loses space" she replied. I still have a tough
time believing that, but it has yet to prove me wrong. Apparently all new,
temp, and spool files are recorded within the transaction manager. If you
crash, it returns the space to the free space table.
The entire startup operation spanned 4 hardcopy pages, mostly taken up with
status information and I/O device mapping. The system takes the
configuration you claim is there, then goes out and checks to see what is
really there, and throws away the garbage. As long as it knows the physical
path to the system disc and the system console, it will come up regardless of
how badly you configured it (I'm sure it has a limit, but it is very
forgiving). Last but not least, it polls the terminal controllers over the
LAN and downloads their microcode as necessary (if the controller is
otherwise content, it will inform the system not to bother downloading).
This was the first real display of a "warm fuzzy" feature, and is a good
example of where MPE seems to be going. Regardless of how complex some
things appear to have become, MPE is getting much more tolerant. In other
words, it is trying to be helpful, forgiving, and if not fail-safe, at least
fail-soft. A configuration error in MPE V will surely result in a stack
trace abort during startup or a system failure shortly afterwards. On MPE
XL, it simply discards the error and keeps on humming with what it has,
leaving you to fix it later. Although I still don't trust it explicitly, it
has yet to fail.
After a good experience, it only follows that someone should pull the rug out
from under you again. We started on the file system. The most difficult
pill to swallow was in regard to my new-found friend, the MPE XL Transaction
Manager mentioned above. When you first define the virgin system disc, or
define a new volume set, our friend the transaction manager allocates for
himself the first 128 or so megabyes of the pack. Yes, that is correct, read
my lips, one hundred and twenty-eight megabytes. We only had 94 megabytes on
the whole system during our first online class registration.
It sounded ridiculous at first, but you have to consider the scale of things.
The Series 950 is currently being shipped with 64 Mb memory standard. You
need 64 Mb of disc just to hold a memory dump of what is in real memory, not
including any extra space for virtual memory. The only thing wrong, I
suppose, is my old Series III brain.
Next we examined :LISTF a bit closer. It doesn't take long to notice many
files with current extents of "1" and maximum extents of "*". Asterisk?
Yes, there can be an arbitrary number of extents. And to add a little spice
to the discussion, there were files with a higher number of current extents
than maximum extents allows! In short, you can have a variable number of
variable length extents, and most large files tend to have a lot of small
extents. The file system tries to keep your disc free space balanced across
all volumes and keep any disc fragmentation to a minimum. From what I have
seen so far, it does a very good job; just stop concerning yourself with
extents.
At closer inspection, you will find that the number of sectors taken by the
file is always a multiple of 16, with a minimum of 16 unless the file is
empty (in which case it is zero). MPE XL does not store the file label with
the file, so an empty file takes no space. The business of 16 sectors
resolves itself to be exactly 4096 bytes, or one "page" (remember Spectrum
has paged virtual memory, not the old familiar segments). The file system is
rather intimate with the memory manager and therefore likes to deal in pages.
It also likes to read in multiple pages for a cache effect, and likes to
chain the writes together as well. The sizes of the disc I/O transfers on an
MPE XL system are huge, right up to (if not exceeding) the limits of the
older MPE V. Consequently, there are no disc caching commands (since MPE XL
does it implicitly) and they say you can't take advantage of caching drives
like the 7937XP (which primarily help small-size I/O transfers).
If you have ever been short of disc space and found yourself scanning for
files to purge, "squishing" files, or using any other cleaning procedures to
save space, you should be prepared for a little shock. Many of the system
default workfiles, if saved so that you can look at them, have a file limit
of over 4 million records (4M records). They aren't all allocated, of
course, and it only allocates small extents at a time; but seeing figures
like that on a routine LISTF may take some getting used to. Files have to
have "some" file limit even though MPE XL can allocate numerous extents, and
they apparently chose 4M records as the default.
We next moved to system configuration. SYSDUMP no longer exists and is
replaced by SYSGEN (which builds the cold load tape equivalent) and a
standard :STORE with the ;DIRECTORY option. The SYSGEN tape has no files on
it other than basic system files, the STORE tape has both files and
accounting structure. SYSGEN is another excellent utility that makes a nice
"warm fuzzy" impression. If you have programmed yourself to add a disc drive
by going through the SYSDUMP dialogue to the proper point, then giving the
proper LDEV, DRT, type, subtype, driver name, class names, and all the
"unused" blanks, you are sure to love SYSGEN (unless you actsally like the
SYSDUMP dialogue). If you want to add an Eagle disc on path 2/4.2 with HP-IB
address 3, you simply "adev 3;path=2/4.2.3;name=HP7937;class=disc,spool" and
SYSGEN knows the type, subtype, driver, and other information.
But what about terminals? You change them all the time, right? Not with
SYSGEN! You use NMMGR, which to those of you without NS/3000, is the network
manager configuration program. Simply give NMMGR the I/O path to the LANIC
card, and it literally configures the DTC for you. (DTC is short for
Distributed Terminal Controller, forget ATP!) You then give the LAN address
of the DTC, and it gives you two screens for terminals (one for the first 3
slots and another for the last 3 slots). For each slot, give it an LDEV
number and a terminal "profile" that defines the terminal. Most profiles are
supplied ("TR10D96" is a TeRminal type 10, Direct connect, 9600 baud) but you
can make up your own as well.
Once the terminals are defined, you exit NMMGR and run SYSGEN. It will load
in the new configuration, cross-check it against the I/O configuration, and
load the terminal LDEVs into the I/O map, and you are done. If you change a
terminal, you repeat the process. You do have to do the equivalent of a
COOLSTART for it to take effect now, but again, configuration updates are
supposed to be available online as well (Real Soon Now).
The DTCs are reasonably well behaved little boxes. Each can support up to 48
terminals (6 slots times 8 direct connect ports per card) at up to 19200
baud. Contrary to my fears, response time and throughput are equivalent to a
direct connect terminal on a Classic 3000. The performance is probably
better since the DTC has a considerable amount of internal buffer space for
its ports in addition to whatever buffers are available in the system.
ABORTIO to a DTC port is a messy business, at least on release 1.0, but
TERMDSM >RESET is a very effective means of clearing a port. It even
succeeds at aborting hung sessions and other nasty circumstances. Learning
TERMDSM on the system is yet an experience in itself; you run it from within
SYSDIAG, yet another of the "warm fuzzy" utilities. SYSDIAG incorporates
TERMDSM, MEMLOG, CS80UTIL, and numerous other utility functions in one neat
package. The LOGTOOL listings (like LISTLOG5) are terribly verbose, but also
very informative for the most part.
We then reviewed some MPE XL additions such as command files, nested command
interpreters, and other bizarre things. You can find papers on this subject
and thus I won't elaborate in detail. The "mental migration" issue centers
on two key points: (a) anything you type may be a command whether you know
it or not, and (b) the more you learn about MPE XL extensions, the better you
feel.
The first point applies to the "implied execution" feature. If you type, for
example, "FROG", MPE XL will do the following:
* See if FROG is a UDC in your user/account/system UDC(s),
and if not...
* See if FROG is an MPE XL command, and if not...
* See if FROG, FROG.PUB, or FROG.PUB.SYS exists as a file.
* If yes, and it is a program file, it does a :RUN.
* If yes but not program, it executes it as a command file.
* If nonexistent, THEN it says "UNKNOWN COMMAND NAME".
The "command file" is, for lack of a better definition, a UDC that is not
cataloged but whose name is the name of the file it resides in.
The second point applies to new MPE XL "variables" and functions, which allow
you to use strings in addition to JCW numerics to perform tests. Instead of
"IF JCW=FATAL" you can have "IF !HPUSER=OPERATOR", for example. MPE XL
doesn't have FULLBACKUP and PARTBACKUP commands yet, but I was able to
"write" them using command files. They also changed LISTF so that if you
LISTF to a file, it writes the names to the file one per line, making nice
input to subsequent command files to do things like the VESOFT product MPEX
does now. There are system defined variables as well which do "nice" things.
You can set the system variable HPTIMEOUT to 30, for example, and any user
who leaves his terminal at a colon prompt for 30 minutes is logged off.
[Jeff continues next issue with the MPE XL programmer's course...]
Robelle Products: Problems, Solutions, and Suggestions
QEDIT Version 3.7
Documentation Error. The 3.7 user manual states that the UDCXL commands for
NM compilers will work only from inside QEDIT. That is incorrect! These
UDCs work at the MPE level or within QEDIT.
Illegal STT Abort. On MPE IV and some early MPE V systems, mispelling a
command name causes QEDIT 3.7 to abort. Fixed in 3.7.1. Patch available.
Stack Overflow. You will get a stack overflow when texting large files, if
you run QEDIT with a maxdata less than the maximum. Remove the MAXDATA=
specification from your UDCs that run QEDIT.
Fopen Error 40 on OPEN. On MPE XL, the PASCXL UDC creates a temporary file
with the same name as your source file. If you Break and Abort the compile,
OPEN will find the temporary file and complain. Workaround: Purge xxx,temp
to remove the file. Fixed in 3.7.1.
Integer Divide by Zero. TEXT $NULL aborts with integer divide by zero.
Fixed in 3.7.1.
Folding Lines. QEDIT 3.7 folds lines to your screen after 80 characters, by
default (previous versions folded after 132 columns for some unknown reason).
If you LIST a long line with display enhancements in it, QEDIT will appear to
fold at the wrong place. Workaround: use :file lpa = $stdlist; rec=-132 and
/listq $lpa xxxx.
$LPA and $LPB Fail on MPE XL due to an HP bug, but QEDIT is changed in 3.7.1
to get around the problem.
File System Problems. If you do a TEXT and/or KEEP through the INFO= string
of QEDIT, the stack is not properly adjusted in 3.7. This can lead to FSERR
74 and KEEP failures. Fixed in 3.7.1. Patch available.
Remote Session From a JOB. If your job creates a Remote Session and runs
QEDIT on the remote machine, the first two lines of QEDIT commands will be
ignored as terminal status. Workaround: do setjcw rcrtmodel=1 before
running QEDIT. Fixed in 3.7.1.
North American customers have been sent QEDIT 3.7. If you experience any of
these problems, call us for QEDIT 3.7.1. Users outside of North America will
receive QEDIT 3.7.1, so should not see these problems.
QLIB Version 5.2
CMSWITCH has been updated to print better error messages, and PROSE now
writes error messages to a separate PERRFILE. SELECT now has a JOBNAME entry
point to use the Hello job name to select the initial user menu. And, ...
Fortune COOKIE Program by Mike Shumko For A Chuckle A Day
This is just exactly what you haven't been waiting for all these years.
Cookie is the answer to the smoldering question, "How can I get my HP 3000 to
make me laugh?"
The Cookie program prints a different message every time it is run. Some of
the messages are amusing, others are deep and thought-provoking, still others
test your knowledge of HP 3000 triva, and some are even animated cartoons.
Cookie may be run as a part of Option Logon UDC or in your QEDITMGR file. It
even has options which allow you to edit the data file, or create your own
joke file, and like all fine Robelle software it comes with a complete user
manual!