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: August 26, 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 #5 What You Will Find in This News Memo: News Tidbits Technical Tips About Robelle Robelle Products: Problems, Solutions, and Suggestions Fortune Cookie of the Month News Tidbits AllBase Unbundled Too! Instead of re-bundling TurboIMAGE, HP has decided to unbundle AllBase/SQL too. You can now purchase series 900 systems with TurboIMAGE only, AllBase/SQL only, both databases, or without a database. Until now, if you wanted to buy a series 900 system with TurboIMAGE you also had to buy AllBase/SQL. See the July 1991 edition of The HP Chronicle. Open Systems: MPE XL vs UNIX. Recent statements by HP management have stressed that HP's strategic focus on Open Systems doesn't mean that you have to trade your HP3000 system in for a UNIX box. HP's plans to add a POSIX interface to MPE XL by December 1991 (see George Stachnik's paper "POSIX and the HP3000" in the June 1991 Interact) and the announcement of 10 new HP3000 series 900 systems show that HP believes there is a strong future for the HP3000 in the Open System world. Win Roelandts, vice president and general manager of HP's Network Systems Group, is quoted in the September 1991 InterexPress as saying "In Hewlett-Packard I'm in charge of all our systems strategy... And I've said it before and I will repeat it again - for me MPE is a strategic operating system." Now if they could only get this message across to the HP sales force. Big Blue Too? According to the 1991 UnixWorld magazine, IBM is planning to integrate OS/2 and AIX (IBM's flavor of UNIX) "so that applications written for each will be portable and have the same look and feel". The goal of this Open Systems Architecture Project is a single applications environment across IBM's proprietary SAA and UNIX lines. There are also plans to make all IBM's operating systems compliant with POSIX and version 3 of the X/Open Portability Guide (someday). News from San Diego. HP made some announcements at the Interex conference in San Diego, including the first of the high-end laser printers based on technology from Siemens. Designated the HP 5000 Model F100, the printer will support PCL 4 (LaserJet compatible), printing continuous-sheet forms at twice the speed and resolution of the 2680 it replaces. HP also announced availability of the three-processor 980/300 by the end of the year, with a four-processor version expected by this time next year. There are rumors of new high-end systems, probably based on PA RISC 1.1, to be released around November (code-named "Emerald"). The battery bunny was beating its drum at the Interex opening party on Sunday night, proclaiming that MPE/V is still alive. We saw many "I [heart] MPE/V" buttons at the show. Meanwhile, customers on MPE XL 3.0 have reported that the latest release of XL is stable. Adager is now Qedit-Compatible. Alfredo has enhanced the latest version of Adager to read and write schemas in Qedit files! Management Roundtable: HP has no plans to port the COBOL/XL compiler to HPUX. MicroFocus COBOL is the suggested "open" choice. HP is working on porting TurboIMAGE/XL to HPUX, but it is a complicated problem. They have a third-party helping them try to iron out the incompatibilities between the MPE and UNIX file systems and operating systems. By the end of the year, HP should be able to announce the results, whether positive or negative. Third-party Software Upgrade Pricing. At the HPCUA conference in Glasgow, HP announced that they will be working with third-party software vendors to rationalize software upgrade prices. Although the price/performance of HP systems has improved dramatically, third-party software vendors charging CPU-sensitive prices have not always adjusted their prices accordingly. HP is concerned that customers have been prevented from upgrading their systems or making the jump from Classic systems to MPE XL because of the software upgrade prices involved. Technical Tips KSAM/XL Copylibs. Although you can use native-mode KSAM/XL files as COBOL copy libraries on MPE XL, you may run into some problems. The compatibility-mode COBOL compiler treats KSAM/XL files as sequential files rather than indexed files, which can be very slow if the copylib file has lots of records. As well, the compatibility-mode compiler may fall into a loop if you have copylib members that in turn copy other copylib members (there is a patch for this problem from HP). Another problem is that prior to MPE XL 3.0, you cannot use COBEDIT to edit KSAM/XL copylibs. You either have to convert the copylib to KSAM/V format to edit it, or use a tool like Qedit that recognizes KSAM/XL copylibs. Unique MPE XL Variable Names. When writing MPE XL command files, you often have to think of unique variable names to store temporary information. A customer noticed that not only can MPE XL variable names contain "_" (underscore) characters, they can start with "_". In fact, variable names don't have to contain anything more than "_". So you could, if you liked, have variables called "_", "__", etc. More on Transaction Manager Tip. In our May newsletter we mentioned a tip from the Masters conference on how to improve performance on busy MPE XL systems by configuring multiple volume sets. For a detailed discussion, see Rob Apgood's "Managing Performance" column in the June 1991 edition of The HP Chronicle. Listing a Batch Job Stdlist. In our May 1991 newsletter we showed a Qedit command file to browse the $stdlist of a batch job on MPE XL without having to know the spoolfile number. One of our customers, Rich Roemer, adapted this command file to work from the CI, using the MPE XL command language: USER DEFINED COMMAND FILE: LJOB.CMD.SYS parm jnum=" " option nolist setvar lj_jnum ups("!jnum")-"J"-"#" if not numeric("!lj_jnum") spoolf o@;seleq=[filedes="$STDLIST"];show echo echo --- Select a JOBNUM from this list of job $STDLISTs. echo --- LJOB expects a job# (ie., #J50, J50, #50 or 50). echo return endif setjcw cierror 0 continue spoolf o@;seleq=[jobnum=#j!lj_jnum and filedes="$STDLIST"]& ;show >LJOBTMP1 if cierror = 0 print ljobtmp1;start=4 >ljobtmp2 input lj_spfline MPE XL 3.0 Compatibility. If you are updating to MPE XL 3.0, 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. Copying Columns of Text. You can copy columns of text from one position in a line to another by setting margins with the Set Left and Set Right commands, holding the columns of text that you want to copy, setting new margins, and replacing the new column range with the text in the hold file. Here is a Command File file that works on MPE V and MPE XL which will do all this for you: USER DEFINED COMMAND FILE: COPYCOL.CMD.SYS parm fromcol,tocol,length,rangelist /set right /set left setjcw right = !fromcol + !length setjcw right = right - 1 /set right !right /set left !fromcol /holdq !rangelist setjcw right = !tocol + !length setjcw right = right - 1 /set right !right /set left !tocol /replaceq $hold !rangelist /set right /set left For example, to copy text from columns 1/5 to column 30 in all lines, you would enter: /copycol 1 30 5 @ Creating Permanent Scratch Files. By default, Qedit's Text command copies the contents of the Text file into a temporary workfile called Qeditscr. Of course, if the system fails or your terminal is disconnected before you can save your changes, the workfile will be lost. However, if you specify a workfile name on the Text command, Qedit will create a permanent workfile for you: /t SGB610.WORK=SGB610.SOURCE In this example, Qedit will create a permanent workfile called SGB610.WORK and copy the contents of SGB610.SOURCE into it. Not only will your changes be saved in the event of a system failure, but you can also switch easily and quickly between workfiles with Qedit's Open and Shut commands. You will have to remember to purge the permanent workfile manually once you are finished with it. Here is an MPE XL command file called TP (for Text Permanent), that will automatically create a permanent workfile by the same name as the text file, in the group WORK. If the workfile already exists, it will verify that it is okay to replace it. You may want to write a command file that will Shut and Purge the permanent workfile after executing the Keep command. USER DEFINED COMMAND FILE: TP parm text_file if pos(".","!text_file") > 0 {text_file name is qualified} setvar work_file str("!text_file",1,(pos(".","!text_file")-1)) + ".WORK" else setvar work_file "!text_file" + ".WORK" endif if finfo("!work_file","exists") listf !work_file,2 if ![finfo("!work_file","fcode")] = 111 echo !work_file,OLD Qedit file already exists else echo !work_file,OLD already exists (not a Qedit file) endif setvar reply "" input reply;prompt="OK to overwrite this file [no]: " if ups("!reply") = "YES" or ups("!reply") = "Y" purge !work_file else echo ---Text canceled return endif deletevar reply endif echo echo ---Texting !text_file into !work_file continue /text !work_file=!text_file deletevar work_file Note that this command file will not work properly if you have a temporary file with the same name as the workfile. Stack Overflows in Pascal/V. The Pascal/V compiler may stack overflow when compiling large source files, especially when it has been "Qedified" to read files in Qedit format. This is because when we "hook" the compiler to read Qedit files, we steal a couple of hundred words of global storage space from the compiler's stack. One of our customers, Gary Penick of Phillips Petroleum, recommends using the $bigcompile$ directive, which may prevent the stack overflow problem. For smaller source files, this will slow down the compilation speed. This compiler option is documented in the MPE V UB-Delta-2 Communicator. Searching a Phone List. Like many of us, Paul Taffel of VESOFT keeps a list of phone numbers in a file. But one thing Paul does differently is that the file of phone numbers is also a command file which searches the list. parm key /set total off setjcw qeditcount = 0 /lq phone "!key"(upshift) if qeditcount = 0 then echo "!key" not found in phone file endif return *** Robelle Consulting (604) 582-1700 VESOFT (213) 282-0420 Jerry Beatty (213) 555-6711 To lookup a phone number, he simply types /phone robelle Suprtool Version 3.3 Problem Sorting Large Records in Suprtool/XL. Native-Mode Suprtool 3.3 cannot be used to sort files with records larger than 4k-bytes. Suprtool/XL will fail as follows: Error: Failure in HPSORTINPUT routine WARNING ** Message set 195, Error number 109 was not found in the system catalog. This is because Suprtool/XL calls the native-mode HPSORT intrinsics, which have an undocumented record size limit of 4k-bytes. According to the HP Response Center, this limitation will not be changed (PICS #W1608229). Until we can find a way to work around this problem, please use an object-code translated version of Suprtool/V to sort files with extremely large record sizes, and call our technical support team. Omnidex Compatibility. Users of Omnidex from D.I.S.C. may run Suprtool in a mode known as Call Conversion. This permits Suprtool to keep the Omnidex index information up to date when Suprtool adds or deletes records from an Omnidex-ed database. We have discovered an incompatibility with the Omnidex Call Conversion library and the 3.3 version of native-mode Suprtool. Suprtool/XL will abort when run with Omnidex Call Conversion. The abort occurs after the Exit or Xeq command and results in a Data Memory Protection Trap. The simple workaround is to execute a BUFFER 16000 command any time before the Output command. You can put this command in your Suprtool configuration file, Suprmgr.Pub.Sys, if you like. Calling Suprtool2 from Native-Mode Quick. In the Suprtool reference manual, we document how to call Suprtool2 from a PowerHouse Quick program. Unfortunately, because of data alignment problems, this example will not work with native-mode Quick. You need to change the Quick "do external" statement so that it does not pass the common area and common area size parameters to Suprtool2. Instead of: do external Suprtool2 passing SUPRFILE you should call Suprtool2 with do external Suprtool2 (SUPRFILE) Comparing Packed-Fields to Today's Date. Suprtool's If $Today function lets you compare date fields to the current date (with +/- offsets). In order to do this, you have to first specify the format of the date field with the Item command. Suprtool supports several different date formats (YYMMDD, PHDATE, ASK, CALENDAR, etc.) and storage types (byte, zoned, integer and logical). The Item command does not support packed-decimal fields however. If you need to compare a packed-decimal date field to the current date, you can will have to execute an additional step to generate the If statement for Suprtool: >input catalog.pub.sys >numrecs 1 >define todays-date,1,8,byte >item todays-date,date,ccyymmdd >extract "if sales-date=" {sales-date is a P8 field} >extract todays-date=$today >output seldate,temp >xeq The Extract $Today function generates a constant value for the current date in the format specified by the Item command (in this case, CCYYMMDD): if sales-date=19910718 Now, Use the temporary file to perform the date selection in Suprtool: >base salesdb,5,readpass >get sales-detail >use seldate {created in previous step} >output curtrans >xeq $Today accepts an optional argument which is the offset in days before or after today. The maximum number of days in either direction is 9999. To extract yesterday's date, you would enter: >extract todays-date=$today(-1) Fortune Cookie of the Month Life is like an analogy.