What's Up DOCumentation
Robelle Consulting Ltd.
8648 Armstrong Rd., R.R.#6
Langley, B.C. Canada V3A 4P9
Telephone: (604) 888-3666
Fax: (604) 888-7731
Date: April 30, 1990
From: Robert M. Green, President
David J. Greer, Research & Development
Michael Shumko, Customer Support
To: Users of Robelle Software
Re: News of the HP 3000, 1990 #3
What You Will Find in This News Memo:
News Tidbits
Unbundling of IMAGE Database?
Technical Tips
Problem Solving with Dbaudit, by Jim Bird
Job Stream to Backup PCs Automatically
About Robelle
Robelle Products: Problems, Solutions, and Suggestions
News Tidbits
Gotcha. An April Fool's joke that we wish we had thought of ourselves...
:setvar hpprompt "Please wait..."
Nuggets Gold Released. Some of your favorite QLIB programs are now available
for MPE XL. These are available in the Nuggets Gold collection from Software
Research Northwest. Included are TINDEX (known in the Qlib as TAPEDIR), SHOT
(aka SOO), KNOCKOUT (like BOUNCER), CAPTURE (aka PSCREEN), GRANT (like GOD),
and a number of new utilities created for MPE XL. For more info contact SRN
at (206) 463-3030.
Spectrum Upgrade Prices. Once again, for those of you who can't believe how
magnanimous we are, here is our pricing policy. There is no upgrade charge
for a simple box swap, and your support fees don't change. If the new
computer is an addition, then you pay the extra-cpu fee for the product.
This fee is not based on cpu size.
Unbundling of IMAGE Database?
We have had a few inquiries about how we are going to react to HP's
unbundling of the IMAGE database (selling Spectrum systems without IMAGE).
Here is our reply at this time.
HP has said that the unbundling of IMAGE does not signal the "end" of IMAGE
-- HP still expects most customers to order IMAGE with MPE XL. We are
curious to see how many Robelle customers order machines without IMAGE.
Three of our four products depend on IMAGE (Suprtool, Dbaudit, Xpress). Most
other third-party products also depend on IMAGE, as do most application
packages. Even HP products require IMAGE (e.g., HP Desk unless they have a
new version that works with HP SQL). As a result, we expect that most HP
Series 900 customers will order IMAGE.
Xpress requires an IMAGE database to operate, and Dbaudit requires IMAGE
logfiles to analyze. We are unlikely to consider migrating these tools away
from IMAGE.
Qedit does not require IMAGE and is unlikely to ever do so.
Suprtool requires IMAGE and does not interface with any other database
packages (i.e., HP SQL or Oracle). Here are a few reasons why we are not
getting too excited about Suprtool compatibility with HP SQL:
1. We have not noticed a ground swell of customers switching from IMAGE to HP
SQL. We suspect that unbundling IMAGE was just part of a marketing
strategy to bring HP pricing in line with DEC and IBM.
2. There are rumors that HP is working on a new database system that would be
upwardly compatible with TurboIMAGE (like Allbase was supposed to be) and
with SQL.
3. Users have a huge investment in IMAGE (e.g., training, knowledge base,
third-party tools, existing software, ...). The benefits of relational
technology must be large to overcome this investment.
4. There are few third-party tools for HP SQL. In general, relational
database systems seemed to be tied quite tightly to single vendors (e.g.,
HP or Oracle). The vendors seem to be saying "trust us -- we'll produce
all the tools you need".
5. As Alfredo Rego has pointed out, you can already build relational
databases with IMAGE. What you don't get with IMAGE are the SQL commands
(either embedded in a program or the SQL query language).
Despite this, I think we should all be considering what to do with relational
technology. We are not yet sold on the vendors' claim of portability,
ease-of-use, and better long-term maintenance. All these things may be true,
but there is little proof of this. For now, we have been spending so much
time working on Native-Mode versions of Suprtool, Suprlink, and Speed Demon
that there won't be any time in the next year to even look at HP SQL. Our
customers have been telling us that Native-Mode should be our highest
priority. [David Greer, Robelle R&D]
Technical Tips
How Not to Purge Files. After reading the article in last month's newsletter
on How Not to Build Files, one of our customers sent this in:
:file filename,old;del
:build *filename
Never knew MPE could be so much fun. [P. J. Voysey]
MPE XL Bug. The Fopen intrinsic has a problem in MPE XL 1.2 (A.20.1N) and
2.05 (A.31.00), which is not present in 1.2 (release A.20.11). Open a file,
asking for Read/Write or Update Access in your Aoptions. If you are only
allowed Write Access due to security restrictions, but not Read Access, Fopen
grants you Write-Only Access instead of Write-Save. This is very bad because
Write-Only resets the Eof of the file, effectively erasing it, while
Write-Save preserves the existing records. [E. A. Kilroy]
PRINTing Files on MPE XL. A customer called with a weird problem: he was
printing a data file to his screen using the PRINT command, and the last
eight characters were always being dropped. It turned out that the last
eight characters were all digits. The PRINT command decided that these were
line numbers so it didn't print them. Specifying the NUM or UNN options
didn't really help. There doesn't seem to be a way to tell print not to
interpret the last eight characters as line numbers. Use FCOPY or SUPRTOOL
instead.
Tech Support Acronyms. Overheard on the tech-support telephone line:
YKWWBRN [ yuck-wa-burn]
You Know What Would Be Really Neat...
WOKOMS [woe-kums]
Works OK On My System
INABIAF [i-na-bee-af]
It's Not A Bug, It's A Feature
IKIWO [ik-ee-wo]
I Know It Worked Once
Problem Solving with Dbaudit
by Jim Bird, Customer Support
Before joining Robelle, I was a system manager at an HP 3000 site, where one
of my responsibilities was support of a third-party financial management
package. Soon after we installed a new release of this package, we ran into
a rather nasty problem. The package included a daily report to validate the
system before allowing anyone to sign on. One morning, the report indicated
that a critical process (like an update to several logically-related
datasets), had not completed successfully. This left the system in an
inconsistent state.
Each time a critical process starts, a "critical" flag is incremented. When
the process completes, the critical flag is decremented. If everything
works, at the start of the day the value of the critical flag should be zero.
It wasn't. However, nobody had encountered any problems during the previous
day: no system failures, no disconnections while on-line, no program aborts.
We called the software supplier for help. They thought we must have missed
something, and advised us to recover the complete financial system to ensure
the consistency of the data. YUCK! This meant restoring the databases from
the day-before-yesterday, re-applying the batch files, and re-doing any table
maintenance. OK, I guess if we have to, we have to. A few hours later we
started up the system, and all the idle data entry operators got back to
work.
Well, you guessed it. Two days later, the daily startup report showed the
same problem: a critical process had not completed successfully. Again,
no-one reported any problems from the previous day. We called the software
supplier, but no other site had reported anything like our mysterious
problem. We were close to month-end and were facing an ugly choice: waste
another half-day in recovery, or carry on and hope for the best.
We went through the complete recovery process. Management supported us
again, but it was obvious that we had to find a way of dealing with the
problem before it happened again.
The first step was to pin-point what critical process was failing. Since we
didn't have access to the source code for any of the programs, this was going
to be tricky. Most of the information in the system was stored in TurboIMAGE
databases, so we turned on transaction logging to record all changes to the
databases. The next time a critical process did not complete correctly, we'd
have a record of it in the transaction logfile.
Unfortunately, HP doesn't provide a way to display the contents of the
logfiles. We called Robelle Consulting, and ordered a demo of Dbaudit, a
utility that validates and analyzes transaction logfiles. When the problem
happened again, we were prepared. We used Dbaudit to report each time the
critical flag was incremented and decremented, sorting the report so that the
updates for each DBOPEN were in order. It was easy to go through the report
and check to make sure that the critical flag was properly incremented and
decremented each time the database was opened. We quickly isolated the
offender.
Dbaudit identified the program, the user running the program, the terminal
being used, and when it happened. After taking a closer look with Dbaudit at
what the program was doing, and questioning the user, we found the answer to
our problem. There was a bug in one of the Accounts Payable maintenance
programs. Cancelling an on-line update, under certain circumstances, failed
to decrement the critical process flag properly. We informed our Accounts
Payable staff of the problem, and outlined changes to their procedures as a
workaround. I had a nice warm comfortable feeling when I called the software
supplier, knowing that I wasn't just guessing as to the cause of the problem
-- I was 100% certain of it. They started working on the fix. Case closed
(and we hadn't even bought Dbaudit yet).
Since we still had weeks left in our free demo, I decided to apply Dbaudit to
another nagging problem with the Accounts Payable system. The on-line
maintenance programs did not generate any audit trails. This left a window
for mistakes to go undetected until it was too late. The software supplier
had finally agreed to add the reports, but only as part of a new Purchase
Order system that was under development (a product that we were not planning
to buy).
We still had transaction logging running, so I whipped up a job that would
run every night. It executed a set of simple Dbaudit reports showing the
changes made that day to specific tables or by specific programs. The
reports weren't beautiful, but they got the job done. I sat down with the
accounting supervisors and explained the relationships between the TurboIMAGE
item names in the Dbaudit report, and the field names that they were familiar
with from the financial package reports and screens.
The accountants were happy, the auditors were happy, and all I had left to do
was convince my boss to buy Dbaudit before the trial expired so that everyone
would stay happy. And when the accountants were happy, and the auditors were
happy, my boss was happy. It didn't take much convincing.
Job Stream to Backup PCs Automatically
Wade Wagner at Rodgers Instrument sent in the following interesting job
stream:
"Here is a copy of the jcl we use to back up our PC's using Qedit. The
Use file Message.Pub prints a message on the PC screen to show that
backup completed okay."
!job pcbackup,user.acct
!comment Wade's backup
!file qedcrt;dev=76
!run qedit.pub.robelle
file backup = backup.wade
setjcw cierror,0
continue
reflect backup c:\*.* /S
use message.pub {print message on PC}
set vis stop {reset Qedcrt file}
comment Rockey's backup
file qedcrt;dev=58 {define second PC}
setjcw cierror,0
file backup=backup.rockey
continue
reflect backup c:\*.* /S {add /C for full backup}
exit
!eoj
This entire job executes within Qedit. The :Reflect Command is a special
Qedit command that executes a Reflection command on your PC. This command
will work in batch if you do a :File Command for Qedcrt to specify which PC.
Should the backup fail for some reason, Qedit will set the Cierror Jcw. The
Set Vis Stop Command allows you to switch to another PC.
Here is the Use file, message.pub:
if cierror = 0 then
reflect display " ^[h^[J"
reflect display " ^[A^[G"
reflect display " ^[A^[G"
reflect display " ^[G^[B"
reflect display " *********************** ^[A^[G"
reflect display " * Backup completed ok * ^[A^[G"
reflect display " *********************** ^[A^[G"
endif
Remember, in order for this backup procedure to work:
* The PC must be turned on.
* Reflection must be running.
* The Reflection baud rate must be the same as in the MPE configuration.
* The PC must not be logged on to the HP 3000.
About Robelle
Have You Talked to Jennifer Mollan Yet? If you have called our office at all
in the last six months, you may have talked with Jennifer Mollan. She has
taken over most of the Customer Account functions at Robelle - filling
orders, keeping track of who has which products, what their addresses are,
and when their service expires. Jen is working on a Business Certificate at
Kwantlen College and still finds time to go to the gym to use the
stair-climber and the hydra-gym weights, do ceramics, camp and fish. She
likes watching local amateur baseball games when the weather is nice. Jen
started at Robelle in September 1989 (her aunts, Kerry and Pat, are
Robellians also).
We Have our 922, But No DTC! Our new 922 machine has arrived and is running,
but with only the console and no NS software. Wow, DAT cartridges are very
small.
Another New Voice At Robelle. In an attempt to cope with our ever-increasing
number of customers and new inquiries, we have hired Nicky Gunther to assist
our Sales Manager Marie Froese and fill in during summer holidays. Nicky is
going into her fourth year at the University of British Columbia in
Marketing. How did she know to call Robelle for a job? She knew us from
hanging around the barn, riding her horse!
Boston News. Robelle will be present in force for the Interex Boston
Meeting, August 20-23. Bob Green will be presenting a new paper, Improving
Software Quality, and technical support people will be available in the booth
to answer your questions.
Interex has set aside time in the program for us to present two tutorials on
Qedit and Suprtool. Here are the tentative dates, times and subjects:
August 22nd 10:00 a.m. New Qedit Features Room A
2:00 p.m. New Suprtool Features Room B
Robelle Products: Problems, Solutions, and Suggestions
Suprtool Version 3.2
Dynamic Selection Criteria. Suppose a file has two dates which you want to
use as Suprtool selection criteria. You can't load the dates into a table,
because table lookups are for equality only, not for range checking.
Solution: turn the file into a complete IF command, then USE the altered
file.
Dates in file DATEFILE:
900301 900331
Use Qedit (your favorite text editor) to change the dates into an IF command:
:run qedit.pub.robelle
/text datefile
/set language job {80 bytes unnumbered}
/c 1 "if date-fld >= " first
/c 23 "and date-fld <= " first
/append " and xyz-flag = 'XX'" first {add any other criteria}
/keep supruse
/exit
Now execute Suprtool, referring to the new SUPRUSE file:
:run suprtool.pub.robelle
>base mybase,5,readpass
>get myset
>use supruse
>out myout
>exit
Patch for Wide USE Files. Suprtool and Dbedit can abort when using a USE
file wider than 80 bytes. The abort can be a bounds violation, stack
underflow, or STT violation, depending on the record length. This is caused
by a too-small buffer. A one-word patch will correct the problem.
:hello mgr.robelle,pub
:run patch.pub.sys
File? Suprtool
?M,16,3651
035051,035201
?E
Note: If Suprtool has been OCTCOMP'd (Object Code Translated), you will have
to patch the un-translated version of the program and re-OCTCOMP it.
OUTPUT,LINK Bug. The new Link output-option includes sort information in a
new self-describing file format. This information is then used by Suprlink.
There are two problems with this new option:
1. If you extract one of the sort fields, the sort information written to the
output file will be wrong.
2. If you re-sort a file into itself using Output=Input, the new sort
information is not written to the file.
You can avoid both of these problems by using the Query output-option instead
of the Link output-option. Another possibility is to use the Link
output-option, but specify the sort keys with Suprlink's BY clause, which
overrides the automatic sort information.
Suprtool2 on MPE XL. The instructions in the Suprtool 3.2 change notice were
incorrect. The correct commands for adding the native-mode version of the
Suprtool2 interface to your own XL file are:
:linkedit
-xl xl.pub
-addxl from=nmrl.qlib.robelle;module=suprtool.asm
-exit
:run yourprog.pub;xl='xl.pub'
Qedit Version 3.8.1/3.8.2
Moving Columns in Qedit. One of our Qedit users, Duane Smith, sent in the
following example that shows how to use the new Replace $Hold Command of
Qedit 3.8 to paste up two columns.
/lt @
....+....10...+....20...+....30...+....40...
1 *****************
2 * Page One *
3 *****************
4 *****************
5 * Page Two *
6 *****************
/holdq 4/6 {Hold the second page of text}
/deleteq 4/6 {Now delete those lines}
/set left 20 {Set your left margin to starting column}
/repq $hold 1 {Overlay from the Hold file}
/set left 1 {Don't forget to reset Left Margin}
/lt @
....+....10...+....20...+....30...+....40...
1 ***************** *****************
2 * Page One * * Page Two *
3 ***************** *****************
Sing Along With Qedit.
Q: How do you do an implied run of a program?
A: You type its name. E.g., /FOO.
Q: What if its name is RUN?
A: You can't use implied run, you have to type /RUN RUN.
Q: How do you re-execute it with no changes?
A: /DO RUN RUN
Visual Mode on MPE XL Console. When is a DTC not a DTC? When you're running
Qedit Visual mode on the console on MPE XL 2.0. Due to ongoing changes in
MPE XL, you may have to fool Qedit into thinking that the console is a DTC
terminal, even though the console is really on the T-Mux, not the DTC.
Workaround: do SET VIS DTC ON. You can make this automatic by setting up a
command file that is invoked from your qeditmgr.pub.sys or qeditmgr.pub.
robelle.
For example, qeditmgr.pub.robelle could contain the following line:
qeditcmd.pub.robelle
And qeditcmd.pub.robelle could be a Command File containing:
if hpldevin = 20 then
/set vis dtc on
endif
Xmit Pacing is Required on 2.0! On MPE XL it is essential that you enable
Xon/Xoff Transmit Pacing on your terminal. If you don't and you use Visual
in Qedit, you may see Qedit go into a loop on MPE XL 2.0, printing
INSUFFICIENT SYSTEM RESOURCES (FSERR 68). You will probably need to abort
the session, then reconfigure your terminal and log on again.
QLIB Version 5.7
COOKIE. Version 1.7 was just released, which works around a bug in an
obscure feature of the MPE XL file system. Some of you MPE XL fans may have
noticed that the fortune cookies were cycling too often. That is, that the
same cookies would come up more frequently than you expected. Finally we
have an explanation. Cookie opens its data file for read-only access, but
uses the Fwritelabel intrinsic to update the file's user label with the
record number of the next cookie to show. This is perfectly valid, though
not widely known.
On MPE XL the cookies would advance as usual, until you restarted the system.
Then the cookies would restart from the beginning again. The reason seems to
be that MPE XL would update the file's label, but would never flush the label
to disc. As long as the file label stayed in memory, the cookies would
advance. But when the system was restarted, the out-of-date disc copy would
be brought into memory again. The fix was to call Fcontrol to put the file
into the serial write queue. This tells the file system that it needs to
update the disc, even though it is open only for read access. The fix was
one line. This explanation is considerably longer.
TAPEDIR. We have heard that as of V-Delta-8, Tapedir needs to be Prep'ed
with an explicit Maxdata, otherwise an Fserr 74 results when opening the
printer file. Workaround: run Tapedir with Maxdata = 10000. [Rick
Gilligan]
*c1950a1000b5g2P*p-50Y
Fortune Cookie of the Month
[National Wanquirer] Have you ever eavesdropped on an argument
between a bunch of old hackers? The first one will say something like,
"You know, when I started programming I had to enter my assembly
language programs using a line editor."
The next one says, "You had a line editor! I had to enter my code
using switches on the front panel."
The next says, "You had a front panel! I had to enter my assembly
code using a second-hand telegraph key."
Next: "You had an assembler! I had to use a stopwatch with my
telegraph key, so I could time the clicks and enter my program in
binary."
"You had a stopwatch! I used to beat time with my foot while I
cranked a generator with my left hand and keyed the program in with my
right hand."
"You had a generator! When I started programming, there was no
electricity. I just used this water wheel and a series of cams and
gears."
"You had cams and gears! When I started all we had was this huge
abacus."
"You had an abacus! All I had was some rocks and a bucket."
"You had a bucket!"