What's Up DOCumentation Robelle Consulting Ltd. Unit 201, 15399-102A Ave. Surrey, B.C. Canada V3R 7K1 Phone: (604) 582-1700 Fax: (604) 582-1799 Date: June 18, 1991 From: Robert M. Green, CEO David J. Greer, President Michael Shumko, Customer Support Jim Bird, Customer Support To: Users of Robelle Software Re: News of the HP 3000, 1991 #4 What You Will Find in This News Memo: News Tidbits Suprtool 3.3 Goes Native! Technical Tips About Robelle Robelle Products: Problems, Solutions, and Suggestions News Tidbits SCRUG Interview with Dr. Codd. The highlight of this year's Scrug conference in Pasadena, California was an interview of Dr. Ted Codd by Adager's Alfredo Rego. Dr. Codd is the computer scientist who first developed and pushed for relational databases. Dr. Codd was scholarly, precise, witty and sardonically humorous about his long battle to add mathematical rigor to databases. He described how the same people who opposed him for years now claim "relational is our strategic database technology and we were always in favor of it." The overall thrust of the session was that SQL is not equivalent to the relational model of a database, and that although SQL is better than the DL/1 database that preceded it at IBM, the euphoria of its newness is causing people to overlook its deficiencies. The two main problems with SQL are that it allows duplicate rows in a table and that it does not support domains as extended types. Dr. Codd is afraid that the trend toward the relational model will be unsuccessful if the world standardizes on SQL. As Alfredo commented, there is an abstract model of an airplane but we don't expect the world to standardize on the DC3. News from the SPARC conference in Melbourne. HP is gaining market share at the expense of competitors, and recently moved up to number 29 on the Fortune 500 list, ahead of DEC. The 980/200 "RISC mainframe" is rated by HP as equal in performance to an air-cooled IBM ES/9000 (but at a much lower price), and one-third the power of IBM's high-end water-cooled ES/9000. Expect even more powerful high-end systems from HP by the end of 1992. More on the new high-volume laser printers: they will be LaserJet compatible (PCL 4), and print at speeds of 100 to 250 pages per minute! In 1992, look for Allbase/Turbo Write Connect: SQL update access to TurboIMAGE databases. By the end of 1992, HP will introduce user-based pricing: how many people use the software, not the size of the CPU it runs on. Hot tip: look for an announcement Real Soon Now of cheaper, faster series 900 (MPE XL) and series 800 (HPUX) systems based on HPPA RISC II, the same technology used in the high-performance series 700 "Snakes" workstations. The model numbers will end in "7". All about hooking programs. If you want to know more about how we hook the MPE compilers to read Qedit files, and how VESoft's MPEXHook lets you execute any command (including UDCs and Redo) inside any program, check out Eugene Volokh's article "Making other people's programs do what they were never intended to do: the MPEX Hook" in the April 1991 Interact. Suprtool 3.3 Goes Native! At Robelle we are always busy programming, improving our software. Our goal is to release a major new version of all of our products each year. If you are a Suprtool customer, you should have received an update tape recently with the latest version of Suprtool (3.3). For those of you who don't use Suprtool, here is a brief introduction: If you have an HP 3000 and you want the fastest possible access to your data, you should look at Suprtool. How does Suprtool work? Suprtool uses the technology of multi-record access (NOBUF/MR) to achieve large reductions in CPU overhead, 1/8th that of serial Dbget in many cases. On a CPU-bound system, such significant savings mean that you can run Suprtool when other programs would strain your system and curdle your users' tempers. It takes only a few steps to add Suprtool to your current reports. You run Suprtool to extract some data for your report, then feed the Suprtool output file into the final report program. For example, you might use Suprtool to fill a Quiz subfile with the subset of data needed, then report that subfile with Quiz. On MPE V systems, Suprtool has always shown a 2 to 10 times performance gain in serial reads. On MPE XL systems, Suprtool can make serial reads up to 8 times faster. This means that you could get a report that used to take 20 minutes -- in 3 minutes flat! Suprtool also enables you to perform time-consuming programming functions easily, with a few simple commands. You can restructure and print fields, edit databases interactively, and access multiple datasets with Suprlink. The enhancements in this year's release of Suprtool include: * Suprtool, Suprlink, and Speed Demon are available in both compatibility- and native-mode. Suprtool/XL and Suprlink/XL support any MPE command, UDCs, and command files. * NEW COMMANDS: Listredo, Redo, and Do will review or repeat any of the last 1000 commands, and handle multi-word searches and @-searches. * You can select duplicate output records using the new Duplicate Command. * In the List Command, there is a new date-format that includes the century. * Suprtool works with native-mode KSAM, and reads KSAM/XL files built with the reuse option. * The Chain Command supports integer search-fields. * Suprlink supports keys of any data-type except real or long. * Suprtool and the Suprtool2 interface now support up to 15 total fields. Along with this newsletter you'll find a data sheet that introduces some of the features of Suprtool. If you are already a Suprtool customer, why not pass it on to someone less fortunate. If you would like more information about Suprtool, call us at (604) 582-1700. Trial tapes are free, of course. Remember, there is no upgrade charge for the MPE XL version of Suprtool. Technical Tips Watch Out for that Break Key! In our last newsmemo, we mentioned a problem with the :Stream command on MPE XL 2.2. If you enter ":" to terminate input, MPE returns a hard end-of-file condition, which terminates the program that you are executing or logs you off if you are at the CI (the same thing happens if you enter ":" to terminate HELP). The patch for this :Stream problem is MPE DXP9. One of the workarounds suggested by the HP response center is to terminate :Stream by pressing the Break key. After we published this advice, we received this in the mail: "A technical tip from your most recent What's Up Doc made me jump off my chair. It instructs MPE XL 2.2 users to work around a :Stream problem by pressing the Break key. Watch out, doing so on MPE XL 2.1 can cause a system abort 2559 (I've been through the painful experience lately). A patch is available from HP." [Sylvain Bouchard] ATP 3-pin connectors. According to Bill Shanks at Waianae Coast, you can get ATP 3-pin connector kits at half the HP price from: Cable Management Systems Inc. 3200 West Warner Avenue Santa Ana, California 92704 (714) 662-0664 Checking to see if a file is on tape. In our March 15 newsletter we asked for advice on how to find out if a file was on tape before opening it (to prevent a tape request in Qedit's Keep and Text and List Commands, which implicitly recognize :file equations). We got replies from Mike Abootorab at Nash Engineering and E.A. Kilroy at Orbit, as well as a response from Walter Manise in his Q&A column in Interact. The solution is to call the Flabelinfo intrinsic with mode 1 (must use file equations) to return the device name of the file (option 23). If there is no file equation, Flabelinfo fails with FSERR 54 (which is fine, since if there's no file equation, we don't have to worry if the file is on disc or not). If the file equation is to a device other than a disc drive, Flabelinfo will also fail with FSERR 54. Don't try this at home. Segmenter's Cleansl command is used to re-pack code segments in SL files. Be careful that you don't use this command on an SL file outside of your logon account. If you don't specify a new SL filename, Cleansl writes the contents of the SL file to a temporary copy, purges the original file, and tries to save the new copy with the same name as the old SL file. Of course, MPE doesn't allow you to save files across accounts. Segmenter will return an FCLOSE error, but by then it's too late - you've lost your SL file. About Robelle CEO got hitched. Last month, our CEO Bob Green was wed to Mary Ann Coates on the sixth hole of the Gleneagles Golf Course (in West Vancouver, not Scotland). Dinner and live 50's rock-n-roll followed, with the guests including the numerous relatives, computer nerds, and Mary Ann's unique friends from her 12 years living in the Queen Charlotte Islands (see North, far North). The couple honeymooned in Bermuda with their golf clubs, then hurried back so Bob could work on native-mode Qedit. RUG Meetings. Bob Green will be going to MARUG and the All Texas Rug Oct 10-11 (Marug) and Oct 14-15 (All Texas). Bob will be presenting his latest paper, "The Warning Signs - a Pop Quiz on Quality." San Diego Interex Conference. Don't forget, the next Interex Conference will be August 5th in San Diego. If you need some added justification to attend, come to see Bob Green present David Greer's paper on the MPE XL System Debugger, or attend David's eye-opening tutorial on the design of user interfaces. You can also get some free training, straight from Robelle's development lab. Bob Green and David Greer are teaching one-hour tutorials on advanced features of Qedit and Suprtool at the conference. Even experts are sure to learn valuable tricks on how to use their favorite tools. Tutorial attendees will have a chance to win a Robelle golf shirt. Just clip out the coupon and bring it along to the tutorial (feel free to make copies for any of your friends who will be coming along to the tutorials). But remember, you have to be there to win. And you have to sit through the entire hour - the prize draw will be made at the end of the tutorial. Limit 1 coupon per person. QEDIT Interex Tutorial - Prize Coupon Room 16A, Tuesday 5:00 PM Name: _____________________________________________________ Company Name: _____________________________________________ Telephone: (____) _________________________________________ Do you use Qedit? Yes No If not, what is your reason for attending the tutorial? SUPRTOOL Interex Tutorial - Prize Coupon Room 16A, Thursday, 11:00 AM Name: _____________________________________________________ Company Name: _____________________________________________ Telephone: (____) _________________________________________ Do you use Suprtool? Yes No If not, what is your reason for attending the tutorial? Robelle Products: Problems, Solutions, and Suggestions Updating to MPE XL 2.2. If you are updating to MPE XL 2.2, you should have no problems with the following versions of Robelle software: Qedit 3.9.1, Suprtool 3.3, and Xpress 2.7. Qedit Version 3.9.1. Putting today's date into a file. A customer on MPE V needed to update a date field in a file with today's date in YY/MM/DD format, using Qedit. Here is a Qedit command file to do this: USER DEFINED COMMAND FILE: TODAY.CMD.TECHSUP /t file /c 1/8 "!hpyear/!hpmonth/!hpdate" {replace columns 1/8 with date} setjcw qeditcount 0 /l "/" (5/5) * {is there a "/" in column 5?} if qeditcount = 1 /c 4 "0" {insert leading 0 before month} endif setjcw qeditcount 0 /l "/" (6/6) * {is there a "/" in column 6?} if qeditcount = 1 /c 7 "0" {insert leading 0 before day} endif The value of the JCWs HPMONTH and HPDATE may be single digits (for example on January 1, 1991) so we need to insert leading 0s (91/1/1 becomes 91/01/01). We do this by testing for the existence of the "/" character in specific column positions (if there is a "/" in column 5, we know that the month value is only 1 digit). Lock part of your display screen for reference. A line-mode Qedit command that can be handy is $, memory lock. To keep part of your display from scrolling away, type $ under the line you want to save. From the top of the display to the point where you typed $, the display will be locked. Beneath it, the display will scroll as usual. You can keep a complicated set of commands or other reference material on display while you continue working. Type $- to turn memory lock off. Editing non-displaying characters. If you need to edit non-displaying characters in a file (like escape sequences and control characters), you may find Qedit's Set Decimal function handy. When Set Decimal is ON, you can refer to non-displaying characters by entering the ASCII character code in decimal, preceded by an apostrophe: /set decimal on /list '7 {list all lines with bells} /cq "^" '27 all {change "^" to } /list $c '27 {list all lines with } Note: list $c (short for list $character) will convert escape and control control characters (and other non-displaying characters) to dots when the line is displayed on the terminal or printer. You can refer to character strings of more than one character in decimal mode, as long as you know the decimal values of all of the characters. Use Qedit's calculator to help you with this: /="]" {what is decimal value of "]"} Result=93.0 /set decimal on /cq "^]" '27'93 all {decimal '27'93 is ]} In Visual mode, Qedit will mark lines that contain non-displaying characters with a "?" in column 4 of the screen, and convert the non-displaying characters to dots, except for display enhancements and line-drawing characters (which can be edited). Lines marked with a "?" are not updated when you press enter. To edit bells in Visual mode, use Set Visual Bell to convert bells to a reserved displaying character - we recommend using extend G (Alt-Z G in Reflection). To edit escape sequences other than display enhancements, use Set Decimal On and change the character to a reserved character that does not occur in your file (such as "^"). When you are finished editing the file in visual mode, change the reserved character back to . You may want to setup some command files to simplify this procedure: USER DEFINED COMMAND FILE: ESCOFF.CMD.TECHSUP /set decimal on /cq '27 "^" all /set decimal off USER DEFINED COMMAND FILE: ESCON.CMD.TECHSUP /set decimal on /cq "^" '27 all /set decimal off Next year's release of Qedit will have a Set Visual Escape function which will let you edit escape sequences in the same way as Set Visual Bell. Suprtool Version 3.3 Set Limit Tablesize maximum value. Suprtool's Table Command lets you load large tables of test values for the Chain Command and the $LOOKUP function of the If Command. You can have up to 5 different tables loaded at one time. By default, these tables must fit in 1 megabyte of memory. If you need to load tables larger than 1 megabyte, use the Set Limits Tablesize Command. Since Suprtool stores its tables in Extra Data Segments, the maximum tablesize is restricted by certain system parameters: the max # of extra data segments/process (limit 255) and the max extra data segment size (limit 32764 words). To reduce the number of extra data segments Suprtool needs to store tables, you should configure the maximum extra data segment size as 32764 words. The absolute limit for tablesize is 15 megabytes (255 extra data segments of 32764 words). Remember that MPE takes at least 1 megabyte of real memory on Classic HP3000s, and that as the amount of memory consumed by Suprtool's tables approaches the size of real memory on the system, system performance starts to degrade. Checking character fields for nulls. How can you use Suprtool to check a character field for null values (all binary zeros)? Easy - lie to Suprtool. Tell Suprtool that the field is a binary number, then check for a zero. For example, to check if an eight-byte character field is set to nulls: >define A,existing-field,8,integer {existing-field is X8} >if A=0 Note that the largest integer you may define in Suprtool is eight bytes, so if you need to check a larger field for nulls, you'll need a series of Define commands, and a more complex If command: >define A,existing-field[1],8,integer {existing field is X20} >define B,existing-field[9],8,integer >define C,existing-field[17],4,integer >if A=0 and B=0 and C=0 Redirecting Suprtool program file name in Suprtool2. In the latest version of Suprtool2 (released with Suprtool 3.3), we added a new option to redirect the Suprtool program file to a name other than Suprtool.Pub.Robelle. This is done by setting a JCW and using a file equation for the program file: :setjcw suprtool2filecommand = 1 :file suprtool.pub.robelle = suprtool.pub.util :run example.pub;lib=p This option works on MPE XL, but not on MPE V. If you want to take advantage of this feature on MPE V, please contact our Technical Support team for a patch. Deleting entries from an IMAGE dataset. Suprtool's Get Command uses high-speed serial access technology to scan IMAGE datasets much faster than programs calling DBGET. However, to delete entries from an IMAGE dataset, Suprtool must call standard IMAGE intrinsics (DBGET followed by DBDELETE). If you are deleting entries from a master dataset or if you are deleting all of the entries in a detail dataset, Suprtool calls DBGET to read all of the entries in the dataset. But if you are using the If Command to select entries to be deleted from a detail dataset, Suprtool will scan the dataset using its high-speed MR NOBUF routines. If an entry is selected, Suprtool calls DBGET to re-read the record and setup the necessary IMAGE pointers, before calling DBDELETE. This is very fast if you are deleting a small number of selected entries from a detail dataset. If you are deleting a large number of entries, you should consider opening the database in MODE 3 (exclusive) and using the Set Defer Command to enable "output deferred" processing. Suprtool will call DBCONTROL to defer posting of IMAGE control information to disc and reduce disc I/O. You should ensure that you have a backup of the database or have transaction logging enabled when using this option, as the database will be damaged if the system crashes while the database is being updated in output deferred mode. You can also enable output deferred processing as the default mode for all users of the database with DBUTIL: >>enable base for autodefer Printing Suprtool documentation on a LaserJet. In the printed Suprtool 3.3 reference manual that we sent you with your license tape we forgot to update the instructions for printing your own copies of the manual on a LaserJet. The instructions have been updated in the disc copy of the manual (Suprtool.Doc.Robelle), and in the online help (type "help laserjet"). Here are the instructions: You can print copies of all the Suprtool user manuals on a LaserJet without editing the files. If you have an HP LaserJet and an "F" font cartridge, you may be able to produce documents with italics, boldface, and proportional spacing. We provide a text formatter, Prose, free in our QLIB Contributed Library. You may be able to use a few other font cartridges, such as the "B". The QLIBDATA group contains Include files to configure the document to your font cartridge. "All-in-one" cartridges that claim to be compatible with "B" or "F" usually do not work because the characters are actually of slightly different sizes. We don't provide configuring Include files for every cartridge, but if you don't have a font cartridge that we support, you can still print the User Manual on your LaserJet just as if it were a Lineprinter. It will come out in your default font -- which should have a fixed pitch, not a proportional pitch -- with underlining instead of bold and italics. To change the include file for a different font cartridge, first determine the include filename that you need. Then type :file f92286f.qlibdata.robelle=filename.qlibdata.robelle If the LaserJet is attached (not spooled), to your CRT, you need to set a JCW: setjcw outrecord=1 If you are printing to a duplex LaserJet, or in other words, want double-sided output, set this JCW: setjcw outdouble=1 For printing on a LaserJet with an include file, set the LaserJet output JCW: setjcw outlaser=1 :file infile = suprtool.doc.robelle {name of doc file} :file output;dev=ljet {insert your LaserJet device} {if you have a spooled printer} :run prose.qlib.robelle The Table of Contents prints last, and must be manually inserted after the title page. You can get collated copies on a spooled printer by changing the :File Command. For more information on printing documents with Prose, see the Prose User Manual (in the file Prose.Qlibdoc.Robelle), itself formatted with Prose. Xpress Version 2.7 Leaving messages in your In Basket. After you have read a message in your Xpress In Basket, you may want to leave it there, so that you can look at it again later when you have more time. When Xpress asks you where to move the In Basket message, simply enter "1" (option 1 is "Exit"). Xpress will leave the message in your In Basket, but will not exit Xpress. Howmessy Version 1.8 New Howmessy released with Suprtool. Included with Suprtool 3.3 is a new release of Howmessy which has several fixes. The major change in Howmessy 1.8 is that the average chain length is now computed using the number of unique keys in the detail dataset. In earlier versions of Howmessy, this average was calculated using the total number of entries in the related master dataset. The new calculation is much more accurate. Howmessy 1.8 runs in compatibility-mode on MPE XL. Howmessy cannot be object code translated on systems running MPE XL 2.1 or later. With Suprtool 3.3 we distribute an object code translated copy of Howmessy called MessyOCT. We recommend that MPE XL users execute this object code translated program (rename MessyOCT to Howmessy) as it runs much faster than the compatibility-mode program. Nostalgic Fortune Cookie of the Month You are in a maze of twisty little passages, all alike.