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: June 20, 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 #5 What You Will Find in This News Memo: News Tidbits Electronic Mail at Co-Cam Technical Tips VESOFT and ROBELLE: the "/%" Connection Quick Reference Guide to MPE XL Intrinsics Improving MPE XL Performance by Suspending Programs About Robelle Robelle Products: Problems, Solutions, and Suggestions News Tidbits MPE XL Performance Tools. There are now a few TELESUP tools for monitoring MPE XL systems: SCOUT shows process information and bypasses the flawed measurement interface (look for newscout.privxl.telesup or ask the Response Center to upload it), POET looks at all file activity and can tell you the most frequently used files, and XL/DCP. [Dave Rochford] Does SUE run on MPE XL? Not the one that we distribute. Rumor has it that Stan Sieler has a new version of SUE working on MPE XL, but may market it as a low-cost product. We'll keep you posted. HP has a limited product called HPGLANCE for MPE XL and another possibility is PROBE/XL, a performance monitoring and trending product from Strategic Systems. Telephone: (206) 362-2231. Oddball "Features" of Some HP CRTs. Ross Scroggs of Telamon reports the following: 700/94 Terminal. If a character is typed from the keyboard in the middle of an Escape sequence being sent from the 3000, the typed characters are interpreted as part of the Escape sequence. While the terminal microcode is interpreting Escape sequences, it can't distinguish between characters entered at the keyboard and those coming from the datacomm port. XOFF Typeahead Buffering. Some terminals have limited typeahead or character buffering capability. When the 2392 receives an XOFF, it will store keystrokes until XON is received. Unfortunately, what it stores is the last seven keystrokes (that's keystrokes, not characters). So if you type ten keys after the terminal gets an XOFF, the first three will be lost, and the last seven will be transmitted. The 700/9x terminal is similar, except that it stores the first 15 keystrokes, then loses the rest except for the last seven! This did not matter much in the past, since the Classic 3000 does not use XOFF for flow control, but MPE XL machines use XOFF/XON as their primary method of flow control. Electronic Mail at Co-Cam by Michael Redmond [Co-Cam Computer Group is Robelle's distributor in Australia and a user of Robelle's electronic mail package, Xpress. ed] Our Xpress user base has grown from 10 initial users in 1984 to over 150 at the present time. As we have grown, its use has become increasingly important as a vital means of inter-office communication. It also provides us with a cost-effective way of keeping in contact with our Sydney office, over 800 km away. The growth in our Melbourne office meant that the company was virtually split in two for over six months while renovations were being completed to our new office. Some project teams, sales and marketing, administration and accounts, were in one office, while other project teams, R&D and computer operations were in another. Xpress was used to get messages to people quickly and reliably without having to phone them up to find them not around or in meetings or at client's offices. With Xpress you knew that messages would be received. Now that the Melbourne office has been united at last, we are encouraging people to use Xpress even more. We have set up specific Xpress log-ons for each project team member to use (e.g., the people in the administration area log on as XPRESS.MADMIN, where the M stands for Melbourne). Since there were some groups that did not have access to the Series 52 that Xpress resides on -- our telemarketing division work on UNIX systems -- we have placed a terminal connected to the Series 52 in each of these areas and users can have access to Xpress easily. Xpress is used by all levels of Co-Cam staff, from upper management to staff juniors. The bulletin board is one feature that is of great value to Co-Cam. It is used for a variety of reasons. Notice of an important staff meeting may be followed by an advertisement for a used car. R&D use it to notify programmers of new releases of Co-Cam software, and I use it to notify people that a new What's Up, Doc has arrived (this notice is followed by a stampede to my desk for a copy). All in all, the Xpress bulletin board is the best communicator of information that we have at Co-Cam. On the resources side of things, Xpress is a snap to manage. I have very few, if any, problems with it. The resources it uses are minimal and the time spent in managing the database is also very small. Personally, I find it a great little product. I have a lot of contact with one of my colleagues in Sydney. We swap messages daily on different topics, and electronic mail helps us utilize our time much better than if we had to muck around with costly phone calls or wait for the overnight mail to be delivered. The bring-forward file is another feature that gets a lot of use. I use it to remind me to send out Software Renewal notices for Robelle clients, send out monthly rental invoices, and lots of other important messages that I need to be reminded of in the future. These messages would normally be on scraps of paper cluttering up my desk. Technical Tips CRTs + Magnets = Bad. In the good old days when crts were all monochrome, it was great fun to move a magnet around the face of the screen and watch the the letters and words do the electronic equivalent of the Pepto-Bismol TV ad. Those days are gone. Do not do this on a color crt: you may damage the screen permanently. Modify All. You have some output on your screen that you want to capture in a Qedit file, but you don't want to re-type it all. Here's how to avoid the wear and tear on the digits: in Qedit, type ADDQ. This puts you in add mode but doesn't print a line number for each line to be added. Move the cursor to the first line to be added. Pull up the "modes keys" on your HP terminal or clone, and turn on MODIFY ALL (f2). Now just press Return on each line that you want to copy into your file. When you're done copying, turn off MODIFY ALL and type // and Return. That's it. This can also be used as a REDO command: turn on LINE MODIFY (same as MODIFY ALL but turns itself off automatically when you press Return), move the cursor to the line to be re-executed, correct any typos, and press Return. Easy as pi. Adager Tip. Change automatic master sets to manual, before doing a big detail dataset reload. This will avoid deleting and re-adding the master entries, and is almost instantaneous. [Fred White] How to Splice in Qedit. You can use the JUSTIFY FORMAT command to splice two lines together in Qedit. For example, /list 5/6 5 This sentence can be spliced 6 from two lines to one! /justify format 5/6 5 This sentence can be spliced from two lines to one! Remote "Batch" Sessions. In the last news memo we asked for help in solving a problem where Qedit eats its first two command lines because it is trying to identify the crt model of a remote session that is launched from a job stream. Thanks for all your suggestions on how to detect this situation, but no one has yet found a method that works on most versions of MPE. Creative suggestions: CAUSEBREAK intrinsic, JOBINFO intrinsic, FCONTROL-39 to request the termtype (this fails for remote "batch" sessions on some versions of MPE, but not the most recent ones), and FFILEINFO code 60 (this does tell you that you are connected via a DS psuedo-terminal, but not whether the originator at the other end is a job or a session). For anyone with only a few job streams to modify, there is an easy workaround for Qedit. Do setjcw rcrtmodel = 1 in the remote sesion before running Qedit. Avoiding Nested Qedits. You have a UDC "qed" to invoke Qedit, but the users get confused and invoke it when they are already inside Qedit. How do you stop them from falling into this trap? Modify your logon UDC to do setjcw insideqedit = 0, then modify your qed UDC to bail out if insideqedit ever equals 1 (as it will inside Qedit): QED infostring if insideqedit=0 then run qedit.pub.robelle;parm=4;info="!infostring" else display You are already in Qedit! endif *** VESOFT and ROBELLE: the "/%" Connection by Michael Hensley, VESOFT Technical Support One of the most fundamental (and under-utilized) connections between MPEX and Qedit/Suprtool is the "MPEXHOOK" facility. MPEX hook allows you to: * Enter virtually ANY MPEX command, such as %ALTFILE, within Qedit! :run qedit.pub.vesoft; lib=p /%listf myfile,access (This MPEX command shows who is accessing the file "myfile") /%altfile myfile; flimit=eof*1.5 (Make the file %50 bigger if you just got an "Error:full") /%print @.source; out=*lp (Print all of the files in the group "source") /%$cobolii myfile.source,=.prog (Submit a job to compile "myfile.source") * REDO (with or without changes) any of the last 1000+ commands you have entered in your current Qedit or Suprtool session; additionally, you can keep your "redo-stack" from one session to the next! For example, in Qedit: :run qedit.pub.vesoft; lib=p /:run myprog; lib=g; parm=%1024; info="this and that" (myprog runs, aborts; you fix and re-compile it) /,,:run <-- this will list all commands you've entered that start with ":run" /,.:run <-- this will DO the LAST command starting with ":run" /,:run <-- this will REDO the LAST ":run" and let you make changes to it This provides you with a kind of "instant function keys" that let you instantly re-execute the last /:cobol, /:prep, /:run, /t, etc. you've typed. In Suprtool, suppose you enter the following: :run suprtool.pub.vesoft; lib=p >BASE... >GET... >EXTRACT... >OUTPUT... >IF... >XEQ... As you know, the XEQ resets all of the commands (except BASE). Suppose you change your mind and want to redo all of the above, but with a different IF? No problem! >,, <-- LISTREDO to find the command numbers >,.2/4 <-- DO commands 2/4 (GET..., EXTRACT..., OUTPUT...) Notice that you can DO/REDO a RANGE of commands! >,5 <-- REDO 5 (the IF), making your changes >XEQ Voila! (We haven't room here to discuss VEMODIFY on the REDO command, increasing the size of your REDO stack, keeping your REDO stack from one session to the next, etc; please see the MPEX Reference Manual or on-line HELP system for complete details.) * If you are using an MPEXHOOKed version of Qedit and Suprtool, and you have SM capability, you can NEW and KEEP files (in Qedit) across account boundaries; same for >OUTPUT in Suprtool! * If you are using the new ACDs (Access Control Definitions) of MPE V-Delta-4, and an MPEXHOOKed version of Qedit, ACDs will be preserved when you do a TEXT/KEEP (they are normally lost). How do you "HOOK" Qedit and Suprtool? Well, if Qedit is installed on your system, VESOFT "hooks" it for you automatically when you install or upgrade MPEX. From then on, if you :RUN QEDIT.PUB.VESOFT;LIB=P instead of :RUN QEDIT.PUB.ROBELLE (note that the LIB=P is required), you will be using the "MPEXHOOKed" version of Qedit! What about Suprtool? If you have STREAMX, just: RUN HOOKPROG.PUB.VESOFT; INFO="SUPRTOOL.PUB.ROBELLE" and, from then on, :RUN SUPRTOOL.PUB.VESOFT; LIB=P. You may want to change your UDCs for Qedit and Suprtool to run the HOOKed versions. Quick Reference Guide to MPE XL Intrinsics CATOPEN. Surgical - must have VM (Veterinary Manager) capability to execute this call. CATREAD. Gives specified feline the ability to read in the given language. CAUSEBREAK. Initiate a random system failure. CLEANUSL. Short for CLEAN USER/SYSTEM LAVATORY. Need LM (Lavatory Manager) capability to execute this call. CLOCK. Reset the Greenwich Atomic clock. CLOSELOG. Not used anymore. Predecessor to the clothes line when clothes were hung over a log to dry by the fire. CTRANSLATE. Convert novels from the current native language to a user-specified language or dialect. DATELINE. Cause the international date line to be moved by the specified amount. DEBUG. Only used in projects of more than one person. Common usage would be `Which of you idiots just introduced DE BUG in my code!' FATHER. (Verb) Must be over 18 to use this call. (See also FPOINT). FCHECK. Presents the bill. FMTCALENDAR. Produces a glossy 8" x 10" wall calendar with pictures of gorgeous men or women, depending on the gender of your logon name. Nationality of these gorgeous people will depend on the current setting of the LANG environment variable. FLOCK. Specify sheep paddock number. Only valid for country sites. See also FATHER. FPOINT. See FATHER. FREADBACKWARD. A dyslexic favorite. FREADLABEL. Returns your shirt size. FRELATE. See FATHER. FSPACE. Like Wow Man! FUNLOCK. Speaks for itself. GETORIGIN. Relate theories of evolution. Currently only supports LAMARK and DARWIN modes. JOBINFO. Lists attributes of your current job, including your level of incompetence, people who are after your job, and a list of people who perform the same job much better than you do. KILL. An underused way of dealing with other members of the current programming team. Often used in conjunction with JOBINFO. MYCOMMAND. Used to gain exclusive access to any command to stop other people from using it. PAUSE. Ask MPE to give you one minute of silence--default is ON. QUIT. See JOBINFO. TERMINATE. See KILL. WHO. See FATHER. Improving MPE XL Performance by Suspending Programs by Carolyn Hayes of The Wholesale Club This past February our Classic HP 3000 Series 70 machines were rolled out of the computer room in favor of the new RISC architecture 925 and 950 systems. The HP 3000 950 is our main production system. With 200 on-line users on this single machine, we experienced performance problems from day one. At night, without the on-line users, the systems flew. The throughput was amazing. During the day, response times were terrible and users complained. No batch jobs run on this system during the day. HP's performance specialists examined our system, and came up with a list of suggestions. One in particular, suspending frequently run programs, turned our system around. Programs can only suspend if they are created by a father process that can handle creating and activating son processes. Qedit from Robelle, and SELECT (a menu system from Robelle that is free when you purchase one of their products) can suspend programs. MPEX and the SECURITY/3000 menu system from VESOFT can as well. Suspending programs call the ACTIVATE intrinsic to reactivate the father rather than the TERMINATE intrinsic to exit the program. While the father has control, the suspended program remains loaded, a dormant process on the system. When the father reactivates it, it comes up immediately, avoiding the costly overhead of the loader. Databases can be left open, and the data stack is just as it was left. We use VESOFT's SECURITY/3000 menu system, so our on-line programs were executed as son processes. We are a TRANSACT shop, using the FASTRAN compiler from Performance Software Group, but the steps we took to suspend our programs will work with any language. In our case, we selectively suspend programs based on an INFO string passed to the program. While some menus may run a program many times a day, others may run the same program rarely. There is no benefit to suspending a program unless it is run multiple times from a session. The program must determine whether it is a son process. This is done by calling the FATHER intrinsic. If the condition code returned is zero, then we can suspend the program by reactivating the father. The program must have PH (Process Handling) capability to call the FATHER intrinsic. We determine whether the program will suspend before the main logic, in the initialization routines, where the databases are opened, variables initialized, etc. This logic need not be repeated when the program is reactivated. We add an additional level to repeat the main logic until the program terminates. If the program suspends, this loop never terminates, since the program reactivates the father rather than terminates. This main logic routine is re-entered instead. The program is only terminated externally, by killing the program, or by terminating the program's father. We leave our databases open when the program suspends, which saves the overhead of the DBOPENs. It works best to close the forms file and reopen it when the program is reactivated. We tried using the VTURNOFF intrinsic from within VPLUS and leaving the forms file open, but were having some problems with the keyboard staying locked when the line-mode father process is reactivated. For a program to suspend, it must call the ACTIVATE intrinsic where it would normally exit. ACTIVATE has two parameters, the Pin and the Allow parameter. To reactivate the father, the Pin must be zero. The Allow parameter must be one, indicating that this process expects to be activated by its father. The father process then takes control. When another RUN is issued against the suspend program, the father will activate it rather than create a new process. The program comes up immediately, just as though it were never left. The only price to pay with program suspension is a hefty jump in the number of activate processes. We went from around 800 processes to nearly 1200, with about ten programs suspending. Two of these programs account for nearly three hundred processes. We have been told not to exceed 1300 processes on MPE XL Version 1.2. When the user exits the father process (in our case, when he signs off), all the son processes are killed by MPE XL. To allow our menu-secured users the ability to kill these suspended programs (so that the database can be freed, for example) without signing off, we created a Program Termination menu, which will terminate a selected program, or all programs that could possibly be suspended (via a list of Kill commands). This is rarely needed, but nice to have around. We have been most aware of the benefit of program suspension after a system failure. All the suspended processes are lost and our system's performance is horrendous while programs are being loaded for the first time. Suspending these few programs was the most important thing we did to improve performance on our MPE XL system, and its effect was dramatic. The system seemed twice as fast. The Loader overhead on MPE XL must be enormous for this change to have made our system performance improve so dramatically. While performance is now tolerable, it is still not lightning fast, and we are looking forward to our upgrade to the HP 3000 955. The benefits of program suspension will still be there, though, and we will be getting more processing power for our money by using it. About Robelle Users Groups. Bob Green will be speaking at the ORERUG meeting on August 5th. Robelle Products: Problems, Solutions, and Suggestions Suprtool Version 3.1.1 Documentation Error: SET EOFREAD is not ON by default. Page 92 of the Suprtool 3.1 User Manual states that the default for SET EOFREAD is ON. In fact, it is OFF. The corrected entry reads as follows: When you specify the GET command, Suprtool determines how many records to read from your dataset. By default, Suprtool calls DBINFO to obtain the number of entries in the dataset. Suprtool reads the dataset until this many entries have been read. If you are adding and deleting records while Suprtool is reading, some records can be missed. Turning Set Eofread On forces Suprtool to read to the physical end of the dataset. For hashed master datasets, turning Set Eofread On will have little performance impact, unless the dataset is nearly empty. For detail datasets, turning Set Eofread On will significantly slow Suprtool down. Even with Set Eofread On, there is no guarantee that Suprtool will find new entries that were being added as Suprtool read your dataset, but it should find all others. In addition, the warning message which is produced when records are added to the dataset is misleading. The warning reads "Suprtool ignored some new dataset entries." This leads you to believe that it is only the newest entries that were skipped. In fact, it is likely that these new entries were read and that older entries were skipped. Using SET EOFREAD ON will help eliminate the potential of missing records, at the expense of longer run times. An Interesting Story. Why does the following Suprtool operation "hang" for a full minute before printing anything out on the screen? (When the equivalent FCOPY task starts printing records immediately.) :listf slowfile,2 FILENAME ------------LOGICAL RECORD----------- ----SPACE---- SIZE TYP EOF LIMIT R/B SECTORS X MX SLOWFILE 1W FB 10000 10000 1 10001 8 8 :run suprtool.pub.robelle >in slowfile;out *;xeq Suprtool does multi-record no-buffered reads, gulping down over 12000 words of data at a time. Because the record size is one word, the very first FREAD gets the whole file! It takes about a minute on a Micro 3000 to read ten thousand sectors to fill up Suprtool's buffer. DBAUDIT Version 1.9 DSSERVER Program. If you see the program DSSERVER.NET.SYS in your DBAUDIT reports, you should be aware that this is a remote DS or NS user who is using your database through HP's remote database access. DBAUDIT will show you the DS psuedo-terminal number as the Logon Device, with the User name of the REMOTE HELLO, but we can't tell you what remote program is actually modifying your database. *c1950a200b5g2P*p-50Y Fortune Cookie of the Month. Q: Is sloppiness in speech caused by ignorance or apathy? A: I don't know and I don't care. [William Safire]