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!