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: November 30, 1988 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, 1988 #7 What You Will Find in This News Memo: News Tidbits About Robelle 'Twas the Night Before Implementation Technical Tips Robelle Products: Upgrading to Series 9xx SUPRTOOL & QSCHEMA Revisited Block-Mode Type-Ahead on MPE XL Robelle Products: Problems, Solutions, and Suggestions News Tidbits DATAMATION Reviews MPE XL 1.1. "Conjuring up memories of the great cola wars, Hewlett-Packard customers are calling their non-RISC line of minicomputers `Classic 3000s'." So starts a two-page review of MPE XL 1.1 in the October 1st issue of DATAMATION. Besides reporting what we all know, that MPE XL 1.1 is a big improvement over 1.0, the article reported a few interesting tidbits: "In going from MPE XL 1.0 to 1.1, HP had to fix several hundred bugs ... HP reports that programs under compatibility mode run at 85% the rate of native mode [after OCTCOMP? Ed.] ... the hidden but expensive issue of disk and memory requirements under Spectrum ... The MPE XL operating system itself reportedly takes up 300MB of memory, many times more than is the case with MPE V ... Development dollars at HP are equally split between Unix and MPE." McKittrick and Associates. Kathy McKittrick, formerly with D.I.S.C., has formed her own company to do sales and marketing consulting for companies in the HP 3000 marketplace. Telephone: (301) 690-1550. What Does `CIA' Stand for? CPU I/O Analyser. There is a new performance monitor for MPE from Australia called CIA. Users who have tried it like the simple operation, the low system overhead, and the ability to drop a `cpu hog' process into the ES subqueue! Telephone: (512) 346-0904. Rumor of New MPE Security. HP is working on new security to satisfy government rules. Security must be attached to the object, not to the group or account as in MPE. Therefore, MPE will allow you to add security to a file that overrides the group/account security, and that can go with the file when you copy it. More on QUERY Bugs. Following up on last issue's report, Gilles Schipper has verified that QUERY C.02.00 (V-Delta-2) does have the problem we reported (deleting all migrating secondaries!). The same bug is also in QUERY D.00.04 on MPE XL 1.1. Also, LG capability is again needed to open a database for write access that has been enabled for logging. This is an old bug that has reappeared in V-Delta-2. No word on whether the LG bug is on MPE XL. RSPOOL. In the August '88 issue we reported that RSPOOL was from the contributed library. It isn't. It was given to the user by the author, an SE. But John Sullivan, Interex CSL Manager, is working on obtaining RSPOOL for the contributed library. We'll let you know once he gets the author's approval. Stay tuned; film at eleven. Fiber-Optic Disc Interface. Disc drives are no faster on MPE XL and MPE V, but HP has a new fiber-optic disc interface on MPE XL that is reported to improve disc-access speed by 25% to 30%. BackPack/XL in Beta Test. BackPack is now being beta-tested by MPE XL users. Initial reports are that it still achieves a reduction in tapes consumed and completes about 15% faster than NM STORE. The new 7980XC tape drive has on-board data compression, increasing the amount of data written to a tape by at least a factor of two. Combining this with BackPack's own data compression, you increase packing by a factor of four. Then buy several 7980XC drives and use the TAPES= option of BackPack, plus the DEFER option, and you might be able to achieve unattended backup on your 950. PC to Mainframe File Transfer. Walker Richer & Quinn has announced 3270 File Exchange for asynchronous file transfers between PCs and IBM mainframes using IND$FILE. Telephone: (206) 324-0350. New LaserJet Prints on Both Sides. HP has released the LaserJet IID, which is capable of printing on both sides of a piece of paper (called duplex printing). It also has two paper input trays and comes with 24 fonts standard. About Robelle Bob Green to Speak in Oklahoma City and Atlanta. Bob Green of Robelle will talk on The Spectrum Instruction Set to users in Oklahoma City on February 7th and in Atlanta on February 9th and 10th. In Atlanta, Bob will also be running training sessions on the use of QEDIT and SUPRTOOL (5 pm Thursday, the 9th). Details of VAR Program. Robelle is now offering a VAR program that allows application software vendors to bundle our software into their products. The program is available for QEDIT, SUPRTOOL, DBAUDIT, and XPRESS. The Speed Demon portion of SUPRTOOL is available with a list price of $1500 (one-half the price of SUPRTOOL). VARs receive a 35% discount on all software that they sell with their products. Streamlined procedures: twice yearly reporting and payments, no extra maintenance fees, and no extra license agreements for VAR's customers. Restrictions: VAR's product must have a price at least five times the price of the Robelle product, and the VAR must purchase a copy of the Robelle product. San Francisco '89. We'll be treating our customers to a three-hour evening yacht cruise at the San Francisco conference next year. Enjoy food, drink, and music while cruising beneath the Golden Gate. So plan to come to San Francisco next September and pick up your tickets at the Robelle booth. Swap Tape Contest. Just a reminder to get your new or improved contributed programs to Interex for consideration for the $2500 Robelle Prize. 'Twas the Night Before Implementation... and all through the house, not a program was working, not even a browse. The programmers hung by their tubes in despair, with hopes that a miracle soon would be there. The users were nestled all snug in their beds, while visions of inquiries danced in their heads. When out from the machine room there arose such a clatter, I sprang from my desk to see what was the matter. And, what to my wondering eyes should appear, but a super-programmer (with a six-pack of beer). His resume glowed with experience so rare, he turned out great code with a bit-pusher flair. More rapid than eagles, his programs they came, and he cursed and muttered and called them by name: On Update! On Add! On Inquiry! On Delete! On Batch Jobs! On Closing! On Functions Complete! His eyes were glazed over, fingers nimble and lean, from weekends and nights in front of a screen. A wink of his eye, and a twitch of his head, soon gave me to know I had nothing to dread. He spoke not a word, but went straight to his work turning specs into code, then turned with a jerk. And laying his finger upon the key, he brought it all up and it worked perfectly: The updates updated; the deletes, they deleted; the inquiries inquired, and the closings completed. He tested each whistle, he tested each bell, with nary abend, all had gone well. The system was finished, the tests were concluded. The users' last changes were even included! Yet the users exclaimed with a snarl and a taunt, "It's just what we asked for, but NOT what we want!" [reprinted from BCRUG newsletter, December 87 issue, author unknown] Technical Tips MPE XL Intrinsic Incompatibilities I. A common piece of error-handling code might look like: fread if <> then fgetinfo fcheck On MPE V, this works because FGETINFO doesn't change the error code. The error code reported by FCHECK would be the result of the FREAD call. But on MPE XL, this does not work as the FGETINFO resets the error code to zero. [Eugene Volokh] MPE XL Intrinsic Incompatibilities II. The FLABELINFO intrinsic returns "Number of user labels written" as item 10 and "Number of user labels available" as item 11. On MPE V, item 11 returns the total number of user labels allocated to the file when it was built. But on MPE XL, item 11 returns the number of labels not yet written. Workaround: use FGETINFO to get the total number of labels allocated to the file. NS Warning. Do not break/abort a process that has an NS line open and a remote process running. This will hang the NS line, forcing a restart of the remote system. However, doing an abortjob command on the remote session before the local break/abort works fine. In fact, after the remote session terminates, your local process may be aborted for you by MPE. Reported on MPE version G.B3.02 on two Series 68s. [Bob Liotta] How to Mark Entire Database for Backup. On Turbo IMAGE, if you want to "dirty" all of the files in a database so that they will all appear on the partial backup, use the RELEASE (or SECURE) function of DBUTIL. An Oddity? Why does the ROBELLE account exist on every MPE XL machine shipped from Cupertino? With nothing in it and without a password? MPE XL Performance. At an HP talk to the New York Users Group recently, we learned that MPE XL 1.1 is due to have Native-Mode VPLUS instead of CM. Also, that the path length (number of instructions executed) to go from CRT to memory is longer on XL and V/E, but the path length to disc is shorter on XL. If you use Extra Data Segments a great deal and don't have time to rewrite your programs to use Mapped Files, HP has unsupported NM routines that simulate the XDS intrinsics without switch stubs (these were written by an SE for a customer, but are available if you really need them). Computing in the Sky. Most airlines are now allowing people to use their laptops in flight, except during landings and takeoffs. This is a boon to power users who can actually fit one of those machines between them and the next seat. (What if the person in front of you decides to lever his seat back?) One major drawback is that on some models of airplanes, the trays fold up from the seat arm. These trays contain powerful magnets to prevent them from rattling in flight. Keep your data, especially those on floppies, away from these! [Ken Robertson] Robelle Products: Upgrading to Series 9xx Heading the list of "Top Ten Customer Questions" for the past few months has been: "I'm planning to upgrade to a Spectrum. Do you have a native mode version, and how much will it cost me?" The answers are "no" and "nothing". All our products are in compatibility mode. They have been tested on MPE XL, and they all work. You do not need any special versions for MPE XL. Simply take the software you are running now and restore it on your new machine. Everything should continue to work with no changes. You may OCTCOMP the programs if you wish. As for the cost, we are concerned only with the number of cpus you are running our software on, not the size of those cpus. So if you are trading up from a smaller cpu to a Series 9xx, there is no additional cost. However, if the new machine is an add-on to your current stable, you will be required to pay the one-time extra-cpu surcharge (Qedit, Suprtool, Xpress: US $600; Dbaudit: US $400). In the case of an upgrade, we will permit you six months of "overlap" while you are migrating your applications. The annual support fee remains the same. Example #1: currently running Qedit and Suprtool on three machines. Swapping one of them for a Series 950. Cost: $0. Example #2: currently running Qedit and Suprtool on three machines. Adding a new machine, a Series 950, so that the total will be four. Cost: $1200 ($600 per product). Example #3: currently running Qedit and Suprtool on three machines. Trading the two smallest ones for a single Series 950. Cost: $0. (No, you don't get any money back. But if you ever get a third machine again, you won't have to pay for it.) SUPRTOOL & QSCHEMA Revisited by Alan Millar Ungermann-Bass, Inc. [The March '88 What's Up Doc had an article by P. Wood showing how to create Suprtool field definitions from the record layout information provided by Powerhouse. These were then used by Suprtool to fill up a Quiz subfile. Alan Millar has taken that idea a step further. Ed.] I think Mr. Wood has made an excellent start in automating Suprtool definitions, and nothing I am saying is intended to criticize the fine suggestions he has made. However, the job is only half done. There are quite a few things which must be done manually using his method. But what if we could create the whole file of Suprtool definitions automatically? Now, wouldn't that be nice? The heart of what we want to do is only hinted at by one of his last statements: "Of course, a COBOL program could be written to parse the whole wretched mess..." If you view the QSHOW output as a list of records that only needs to be translated into another form, the whole job can be done by just a few lines of Quiz code. The idea is this: send the QSHOW report to a disk file, and process that file with Quiz. That is, take the list of field definitions supplied by QSHOW, and let Quiz turn it into a list of field definitions for Suprtool. Notes on QSHOW Output To capture the output of QSHOW, you can run QSHOW and redirect the STDLIST. Or, you can set a file equation for QSHOLIST to a disk file: :build templist;rec=-80,,f,ascii :file qsholist=templist,old;dev=disc :run qshow.current.cognos Once inside QSHOW, you must SET REPORT DEVICE PRINTER so that QSHOW will use the QSHOLIST file. The advantage of using QSHOLIST is that only the actual file report is put in the file, and none of the other information printed by QSHOW (such as the program banner). Powerhouse subfiles actually can be processed identically to files defined in the Powerhouse dictionary (QSCHEMA). There is a QSHOW command called SHOW SUBFILE, which works identically to SHOW FILE and produces a report with the same information. (Some of the columns are slightly off horizontally, but our program will fix that automatically.) A QSHOW command which can help the whole process is SET COMPRESSED. It suppresses the page numbers and other page heading information in the QSHOW report. A sample output from QSHOW would look like the following: Subfile: F184A.PC (Permanent) Format: 3 Record Size: 138 Bytes Item Type Offset Size Occurs PRONUM CHARACTER 0 18 INSHP FLOAT 18 4 REFNUM CHARACTER 22 10 SONUM CHARACTER 32 10 ARFSC CHARACTER 42 4 TYPNUM INTEGER 46 2 SOES1 CHARACTER 48 30 SOES5 CHARACTER 78 30 BILNAM CHARACTER 108 30 The first thing to do is define what the QSHOW reports look like in a dictionary, which would include the following: File Qshow-Subfile Organization Direct & Open QSHOLIST File QShow-File Organization Direct & Open QSHOLIST Record Qshow-Subfile Item Filler1 character size 1 Item Name character size 23 Item Type character size 18 Item Offset freeform size 10 Item ItemSize freeform size 10 Item Occurs freeform size 18 Record Qshow-File Item Key character size 6 Item Name character size 35 Item Type character size 18 Item Offset freeform size 4 Item ItemSize freeform size 5 Item Occurs freeform size 12 Note that we have two definitions, one for the SHOW SUBFILE output and one for the SHOW FILE output. We make the names of the columns the same, and adust the size to accommodate the differences in horizontal positioning. Note that freeform is a number stored in a character field; Quiz will automatically convert it to a number. The QUIZ Report The first thing I want to point out is that Quiz is not intrinsically required to do the definition translation. I am using it in this situation because Quiz makes it is easy to process files. A COBOL program could have been used also. In fact, we probably could use Suprtool itself! The object of our Quiz report is to produce a Suprtool Define statement for each field. The define statement has the following components to it: - The word "define". - The field name. - The position (starting with column 1). The QSHOW report gives an offset starting at zero, so the position will be the offset plus 1. - The field size in bytes. - The field type, using the Suprtool names. We will therefore have one Suprtool define statement for each line of the QSHOW report. One problem we face is only doing a definition for lines that represent field information. Using the above example of QSHOW output, we do not want to process the first six lines, because they are heading information. For these lines, however, the column containing the field size will not contain a valid number. We can simply tell Quiz to only select those records where ItemSize is greater than zero. To get the field name, we will use the name already provided in the data dictionary. To get the position, we will add one to the offset provided by QSHOW. To get the field type, we can create a Quiz Define statement which maps the Powerhouse types into the Suprtool types. For numeric fields, the Powerhouse type can sometimes have a sign qualifier, so that instead of a field being called type ZONED, it may be called ZONE SIGNED or ZONE UNSIGNED. For our purposes we don't care about this qualifier, so we will only check the first few characters of the type. This summarizes all we need for a Suprtool Define statement. The entire code is as follows: ;QUIZ - Suprtool Definitions ;by Alan Millar - Nov 07, 1988 Access QSHOW-SUBFILE ;or QSHOW-FILE Select if ItemSize > 0 ;Ignore heading lines Define Position = Offset + 1 Define SuprType char*8 = & "integer" if Type[1:8]="INTEGER" else & "packed" if Type[1:7]="PACKED" else & "real" if Type[1:6]="FLOAT" else & "display" if Type[1:6]="ZONED" else & "byte" Report & tab 1 "DEFINE" Name pic"^^^^^^^^^^^^^^^^" & "," Position pic "^^^" & "," ItemSize pic "^^^" & "," SuprType set nohead set page length 1 report spacing 1 set report device disc name SUPRDEFS ;send to disk file go The output from the above example would look like the following: DEFINE PRONUM , 1 , 18 , byte DEFINE INSHP , 19 , 4 , real DEFINE REFNUM , 23 , 10 , byte DEFINE SONUM , 33 , 10 , byte DEFINE ARFSC , 43 , 4 , byte DEFINE TYPNUM , 47 , 2 , integer DEFINE SOES1 , 49 , 30 , byte DEFINE SOES5 , 79 , 30 , byte DEFINE BILNAM , 109 , 30 , byte Just the Beginning This represents a very simple use of definition processing from the data dictionary. There are many other uses for this technique. At Ungermann-Bass we use this technique for many applications. It is used to create record definitions for FORTRAN programs (define variables for each field, and EQUIVALENCE them to the proper element of a buffer array). It is used to create definitions for downloading data for import to a spreadsheet or dBASE (putting commas between each field, quotes around character fields, etc.), and also for creating dBASE database structure definitions for receiving downloaded data. It is used for tape file transfers to other machines (create a new file with all numeric fields converted to type Zoned). The possibilities are endless. For examples of similar concepts in 3GL code, the Interex library contains the programs MGR3000, MGRENTRY, and COBGEN, all of which make use of existing data definitions to save work for the programmer. For a good magazine article, see Derivational Programming by Norman Hills in the June 1987 issue of Interact. Block-Mode Type-Ahead on MPE XL Type-ahead is the ability to keep typing after you press RETURN and not have your keystrokes lost. Type-ahead is not provided by MPE, but is available to MPE users with Type-Ahead Engines (Telamon), Reflection (Walker Richer & Quinn), Cumulus terminals, and even Advancelink from HP. These products can implement type-ahead because MPE V always sends a DC1 (XON) to the terminal port when it is ready to read data. The terminal or PC holds your keystrokes in a buffer until it sees a DC1 come down the datacomm line, then sends your keystrokes to the HP 3000. Type-ahead works on MPE XL as well, but only in line mode, not block mode! In VPLUS or QEDIT VISUAL, the HP 3000 terminal uses a slightly more complex handshake, which still allows type-ahead of block-mode data, ENTER keys, and function keys. After receiving an initial DC1 prompt from the computer, the terminal waits for you to press ENTER. Then it sends a DC2 to the computer and waits for another DC1 prompt before sending the screen; this allows the 3000 time to get buffers ready for the screen of data. Unfortunately, this block-mode scheme does not work on MPE XL. When you are in block mode, MPE XL sets both the G and H straps to YES on your terminal, inhibiting all handshaking. The DTC (data terminal controller) is ready to accept a screenful of data any time you press ENTER, with no handshake. The DTC then breaks the screen into packets and sends it to the Spectrum CPU over a dedicated LAN. But, if you have type-ahead enabled when you press ENTER, your terminal will wait forever for a DC1 before sending your screen - you lock up. Many VPLUS users have gotten used to being able to pre-ENTER their screens, regardless of the response time of the 3000. They are understandably upset by the loss of type-ahead. Temporary Workaround: disable type-ahead when working on MPE XL. Solution. In Reflection version 3.30, Walker Richer & Quinn has introduced a new algorithm that allows type-ahead to work in block mode on MPE XL. In QEDIT version 3.7, due for release in December, Robelle has solved this problem for all versions of Reflection between 2.00 and 3.20 by disabling type-ahead while in VISUAL and re-enabling it in line mode. Robelle Products: Problems, Solutions, and Suggestions QEDIT Version 3.6 Fortran 77 A.00.11. Several recent versions of the Fortran 77 compiler will not compile temporary files, including QEDITSCR. We have previously published patches for A.00.10 and A.01.01; here is a patch for A.00.11: :run patch.pub.sys Filename: FTN.PUB.SYS {or FTN.Q.ROBELLE} ?m,32,7261 041403,021003 Prose Version 2.6 Do you sometimes want to send an escape sequence to your LaserJet in the middle of a Prose sentence? Using the .literal command causes a paragraph break. If the escape sequence is embedded in the middle of a sentence, Prose treats the escape sequence as part of the text (which doesn't actually print) and misaligns the margins. One user solved this problem by modifying one of our standard font include files (see F92286@.Qlibdata.Robelle). He added a new font that had a width of zero and a null escape sequence. This new font is used around escape sequences. The following example would work with the "F" font file: .font(k7 w0 u- '')