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!"