What's Up, DOCumentation? Robelle Consulting Ltd. Unit 201, 15399-102A Ave. Surrey, B.C. Canada V3R 7K1 Toll-free: 1-888-ROBELLE (1-888-762-3553) Phone: (604) 582-1700 Fax: (604) 582-1799 E-mail: support@robelle.com Web: www.robelle.com Date: September 1997 From: Robert M. Green, CEO David J. Greer, President Paul Gobes, Editor pro tem To: Users of Robelle Software Re: News of the HP 3000 and of HP-UX, 1997 #5 What You Will Find in This News Memo: HP World '97, Christmas in August Report from Chicago Qedit for Windows WRQ and TCP/IP Suprtool Training Schedule IMAGE Grows Trees Unsticking Your Keyboard Editing the Net or--"How I Came to Love Really Remote Programming" Testing Client/Server Software Recovering Qedit/UX Scratch Files Sorting Huge Datasets with Limited Disc Space Calculating Days Between Two Six-Digit Cross-Millennium Dates HP World ’97, Christmas in August ================================= The word from Chicago has been very positive. HP made quite a few announcements that please MPE users. Here’s a quick summary: - 64-bit processors: This means huge files and databases will be able to be stored in one piece. (The lack of this had been considered the death knell for MPE.) - SAMBA will become officially supported, allowing better file sharing for 3000s on LANs - JAVA will be completely available and supported. This is great for hosting interactive Web sites on the 3000. - Netscape server will be ported to the POSIX environment - 32-bit ODBC will become part of FOS-great for client/server access to data in IMAGE databases - IMAGE B-Trees and Dynamic Dataset Expansion for master sets will be released soon - "DEVELOPERS 918DX" for $7,000, a CPU-plus-software package to encourage more software to be developed for MPE - 100VG AnyLAN and 100BaseT high speed network links were both showcased The HP3000-L was alive with comments about these offerings. Kudos belong to HP’s Harry Sterling and his CSY staff for doing a great job. [Paul Gobes] Report from Chicago =================== By all accounts the 1997 North American Interex conference was a success. Interex has reported that this year’s conference broke attendance records. Over 6,000 attendees and exhibitors made their way to Chicago’s excellent Navy Pier conference center for five days of meeting their peers, sitting through vendor presentations, swapping war stories, and learning how to improve their HP-UX and HP 3000 operations. The late August weather was perfect in the windy city. On Sunday, the opening day of the conference, an air show entertained the Navy Pier troops with jets screaming overhead. On Monday night at an HP 3000 25th anniversary party hosted by Hewlett-Packard, George Stachnik of HP took over Orly Larsen’s tradition of singing a song written for the event. George sang The Ballad of MPE, which described, in three-part harmony, HP 3000’s history from 1972 to the present. A number of long-time HP 3000 supporters were wearing silver lapel pins embossed with the words "MPE Forever." They had received the pins in the mail the week before the conference from an anonymous source. So far nobody has publicly claimed responsibility for this bit of MPE boosterism. The hot topics this year were ODBC for IMAGE, Year 2000, and HP’s apparent renewed commitment to the HP 3000 platform. A 32-bit ODBC driver for IMAGE/SQL called ODBCLink is already available from M.B. Foster Associates, with HP’s version scheduled for inclusion in MPE/iX 5.5 Express release 3 by the end of the year. Minisoft also has a 32-bit ODBC driver. DISC provides an ODBC driver to connect to Omnidex indexed databases. Computing Solutions was showing their Linkway ODBC driver. Year 2000 readiness was a big issue for many users, and there was no shortage of solutions proposed. Talks and papers outlined a number of approaches, and a number of vendors were claiming that their products are Year 2000 ready. Allegro and SolutionSoft each offered new products that will allow programs to "think" the system date is any desired date, making for easy testing of Year 2000 readiness without actually changing the system date. A common "complaint" from attendees was that there were too many good talks and papers being presented simultaneously, making it very difficult to choose among them. This may be one reason why a few vendors were disappointed with the low volume of people visiting their booths. We at Robelle had no such complaint. Our new Qedit for Windows client/server editor and SmartDate Year 2000 products were very popular draws. At one point people were lined up six deep to get a look at the Qedit for Windows client demo stations, where we were connected over the Internet to our HP-UX and HP 3000 servers in Canada and Anguilla. The Internet connection was sometimes a bit slow, but Qedit for Windows came through like a champ, even when the connection was so bad that a normal terminal connection was too slow to be useable. Robelle collaborated with Adager and DISC to show how the HP 3000 can be used for data warehousing, eliminating the need to move data from the HP 3000 to another database or platform. First we used Suprtool to load the data warehouse from operational data, then we used Adager to create the warehouse in a star or snowflake schema, and finally DISC’s new ODBC driver was used to extract the data quickly using any popular PC-based reporting tool. Robelle technical staff presented a number of tutorials and papers on a variety of topics. Two of these were chosen by Interex to be in the Top 20 of HP World ’97. These twenty sessions were videotaped and will be collected on a multimedia CD-ROM set with full-motion video, sound, slide show, and full transcript and text retrieval. Interex should be releasing the CD-ROM package in a few weeks. The two Robelle sessions in the top twenty are Neil Armstrong’s HP-UX For MPE Users, and David Greer’s tutorial co-presented with Adager’s Alfredo Rego, HowMessy Is My Database? All the Robelle presentations are available for downloading from our Web site. Next year’s conference will be in San Diego on August 2-6, 1998. [Mike Shumko] Qedit for Windows ================= Announcing Our Contest Winner... Over the past few months, some of you have visited the Robelle Web site to request a quotation for Qedit for Windows (QWIN). Everyone who asked for a quotation was entered into the QWIN prize draw, which took place on August 14th. And the lucky winner is... drumroll, please... Mr. Pat Hale, 3M Corporation (Aberdeen, SD) Pat will receive the Qedit for Windows HP-UX server module and two client licenses. Congratulations Pat! Are Demos Available Yet? This continues to be the most frequently asked question we’re hearing these days. After HP World, we went right into beta release of Qedit for Windows and by the time you receive this newsletter, the beta sites will be well underway with their testing. Our technical staff will be working overtime to keep up with beta feedback, and we anticipate full product release in November. The sales department is keeping track of everyone who has requested a demo of Qedit for Windows, so don’t worry--as soon as regular demos are ready to ship, we will contact you. [Nicky Gunther] WRQ and TCP/IP ============== It looks like Microsoft has defined yet another "standard". WRQ has decided to stop shipping its own TCP/IP stack. The next version of RNS will simply be called NFS Connection; it will have the same utilities (NFS, FTP, PING, LPR etc.), but it will not have any winsock.dll. It also will not have the Serial/PPP programs that many of us at Robelle use to connect from home to our office LAN. Here is an excerpt of the announcement sent to WRQ beta testers: "What has become clear to WRQ, in discussions with Microsoft, is that in future versions of Windows 95 and NT, it will make TCP/IP a fully integrated and protected component of the base operating system environment. Because of this change, WRQ believes that while it is still possible to add value to the Microsoft kernel, it is now in the best interest of our customers to use what Microsoft provides in order to minimize risk and ensure a stable operating system." WRQ added that they will continue to provide a 16-bit Windows TCP/IP stack and additional licenses for existing 32-bit stack customers who do not plan to move off Windows 95 soon. For those customers using the WRQ Windows 95 stack who plan to deploy Windows 98, or Winsock 2 dependent applications, we recommend you contact WRQ Tech Support for assistance with a smooth migration. [Paul Gobes] Suprtool Training Schedule ========================== Space is still available for Suprtool training at Robelle’s offices near Vancouver, Canada. These are the course dates: - October 16-17, 1997 - January 22-23, 1998 - May 28-29, 1998 - October 15-16, 1998 We can also arrange private training at your site. If you are interested, contact us for more information. [Rosemary Van Poelgeest] IMAGE Grows Trees ================= HP added a generic search and partial key retrieval feature to IMAGE/SQL by attaching B-Trees to a given master dataset key item. This feature will be available in versions of IMAGE/SQL C.07.03 and higher. B-Trees are only allowed to be built on the key item of a given Manual or Automatic master dataset. However, if the path into a given detail dataset has a B-Tree attached, you can implicitly take advantage of the B-Tree, and a partial key lookup will work on the associated detail. The B-Tree feature is implemented by creating a native-mode KSAM file in the POSIX domain. The file is created with the same name as the master dataset, but it has an .idx extension. If you implement B-Trees you should not store a database with the ;transport option because the B-Tree index file will not be stored. Index maintenance is done through three new Dbutil commands: Addindex database for [ All | Setname | Setnum ] RebuildIndex database for [ All | Setname | Setnum ] DropIndex database for [ All | Setname | Setnum ] A nice feature of the B-Tree implementation is that you can build the indexes without affecting any of your applications. Once you build your indexes Dbfind mode-1 will not take advantage of the B-Tree until you change a setting within Dbutil. In order to choose the B-Tree you must set BTreeMode1 to On. Although this setting is turned on at the root level, you can also change the setting programmatically via a Dbcontrol call. Suprtool Support for B-Trees Suprtool version 4.0.11 has been enhanced to take advantage of these B-Trees via the Chain command. Suprtool will also show any B-Trees that it can use through the Form command. The Chain command has been enhanced to allow partial key retrieval for X and U items on the master dataset and implicitly on any associated detail dataset. For example, >base cd.db.data,5,reader >chain a-songs,song-title="w@" >list >xeq Warning: Using DBGET for the input records >GET A-SONGS (289) >OUT $NULL (0) SONG-TITLE = we only come out at night >GET A-SONGS (56) >OUT $NULL (1) SONG-TITLE = where boys fear to tread IN=2, OUT=2. CPU-Sec=1. Wall-Sec=1. As mentioned, we can search a detail dataset by using the implicit B-Tree or by the search item that has a B-Tree attached to the associated master. >chain d-songs,song-title="w@" >list >xeq Warning: Using DBGET for the input records >GET D-SONGS (37) >OUT $NULL (0) CD-NO = 2 CD-TITLE = Mellon Collie ARTIST = Smashing Pumpkins SONG-NO = 10 SONG-TITLE = we only come out at night >GET D-SONGS (28) >OUT $NULL (1) CD-NO = 2 CD-TITLE = Mellon Collie ARTIST = Smashing Pumpkins SONG-NO = 1 SONG-TITLE = where boys fear to tread IN=2, OUT=2. CPU-Sec=1. Wall-Sec=1. Form Command The Form Command has been enhanced to show whether or not you have B-Trees that the Suprtool Chain command can use. Currently the Chain command will only use those B-Trees that have a type of X or U. The Form command will not show B-Trees that it cannot use, even if the B-Tree does exist. The Form command will also report if a B-Tree is damaged and what the wildcard character is set to. The wildcard character is the character that may be used in order to invoke a partial key retrieval. >form sets Database: CD.DB.DATA BtreeMode1 = ON Wildcard character : @ Set Item Entry Load Entry Sets: Num Type Count Capacity Count Factor Length B/F M-ARTIST 1 M i 2 211 3 1 % 75 4 A-SONGS 2 A i 1 307 41 13 % 20 16 A-CD-TITLE 3 A i 1 211 3 1 % 20 16 D-SONGS 4 D 6 1004 41 4 % 78 4 >form m-artist Database: CD.DB.DATA BtreeMode1 = ON Wildcard character : @ M-ARTIST Master Indexed Set# 1 Entry: Offset ARTIST X30 1 <> NOTES 2X60 31 Capacity: 211 (4) Entries: 3 Bytes: 150 >form d-songs Database: CD.DB.DATA BtreeMode1 = ON Wildcard character : @ D-SONGS Detail Set# 4 Entry: Offset CD-NO J2 1 CD-TITLE X40 5 (!A-CD-TITLE) <> SUB-TITLE X40 45 ARTIST X30 85 (M-ARTIST) <> SONG-NO J1 115 SONG-TITLE X40 117 (A-SONGS) <> Capacity: 1004 (4) Entries: 41 Highwater: 41 Bytes: 156 [Neil Armstrong] Unsticking Your Keyboard ======================== Computer keys that stick can be frustrating. It happens because dust, hair, food and other foreign matter build up between the keys. Janet Attard, author of The Home Office and Small Business Answer Book has some simple advice: "If you don’t have a computer vacuum or air blower at hand, reach for your pad of Post-it Notes," she says. "Take one note and swipe the sticky part gently between the rows of keys. The dust and grime will adhere to the note paper." Important: Don’t substitute tape or labels. They may stick to the keys themselves. [Excerpt from "The Manager’s Intelligence Report"] Editing the Net or--"How I Came to Love Really Remote Programming" ================================================================== When I moved from Western Canada to the tiny Caribbean island of Anguilla (http://news.ai), I took my own MPE and HP-UX servers with me. I did development on a copy of the Qedit source code and transferred the changes to Vancouver every few days over the Internet. We have a SYNC job that uses MPE to list all the files that have changed on each system, then it uses Suprtool to merge the lists and detect the duplicate files-those changed by someone in Vancouver and by someone in Anguilla. Then we transferred the source files using FTP and argued over the conflicts. I had been working this way on Qedit and the new client/server Qedit for Windows (QWIN). Recently I started editing on the Robelle servers, many thousands of miles away, instead of on my local servers. I use Reflection and a VT-MGR connection over the Internet. Early in the morning when I start work, the Internet is not very busy. I get about the same response time from a Qedit Visual screen in Reflection as a Qedit for Windows connection. However, about 11 A.M. in Anguilla the people on the US West Coast get to work and the Internet slows down. Eventually Reflection becomes almost unusable because the echo time for each character stretches into many seconds. However, even at the slowest speed, I can still get a lot of programming done in Qedit for Windows. This is amazing, yet the reasons are quite simple. In a terminal session, each exchange of packets with the host system handles only one character when you are typing. In a QWIN editing session, all the user interface is done locally by the PC program and is not tied directly to the response of the network or the host server. When Qedit for Windows does exchange packets, they contain a complete edit transaction (such as Delete 10 lines, Insert 5 new lines, Get 20 lines). Much more information is transmitted in each packet, so much less network bandwidth is used to provide a comfortable response time. Lines retrieved by Qedit for Windows are retained in a cache and can be repeatedly displayed without bothering the host; you don’t have to wait while the entire file is downloaded or uploaded. Very neat for the very remote programmer. [Bob Green] Testing Client/Server Software ============================== At Robelle we believe in automated testing of our products. Verifying the correct function of a program after every revision is just too boring for humans to do reliably. Griffin Webster of Robelle’s Anguilla office was asked to find an automated test tool for Windows applications. He evaluated two products: Vermont HighTest and Microsoft/Rational Visual Test. The criteria for selecting a tool included: 1. Ability to construct a test suite that would cover anticipated user interaction 2. Fast, convenient macro recording of individual tests 3. Execution of the complete test suite even if individual tests fail 4. Manual creation/editing of a scripting language for special cases 5. Ability to generate a test log that clearly identifies which tests failed and where 6. E-mail notification of developers when a test suite fails 7. Speed of creating tests 8. Compatibility with 16- and 32-bit versions of our client 9. Ease of modification of existing tests to create others 10. Power of scripting language 11. Portability of test suites from one PC system to another The log output of both products was suitable for identifying failed tests, but neither product made it possible to automatically notify a user of test failures via e-mail. We have added this feature ourselves by FTPing a customized report on test results daily to a Web site where all developers can view it. We are still working on e-mail notification of failures from the test PC to specific developers. Both products were capable of doing the basic recording of test scripts and playing them back automatically against a new version of the software. Our results put Visual Test clearly ahead of Vermont HighTest in creating and managing tests, although it does cost three times as much ($600 versus $200). Visual Test comes with a run-time version that can be installed on any PC to execute tests, but not record or modify them. We considered this a very useful feature because we would like to run the tests on as many client platforms as possible. [Excerpt from Bob Green’s paper "Converting Qedit to the Client/Server Model"] Robelle Products: Problems, Solutions and Suggestions ----------------------------------------------------- Recovering Qedit/UX Scratch Files ================================= Temporary Qedit scratch files are usually created in /usr/tmp (for HP-UX 9.x) or /var/tmp (for HP-UX 10.x), unless TMPDIR is specified to a different directory. If your connection is lost, however, scratch files still remain in the system. If you use the Text command on the file after losing the connection, you will get an "Error: In Use" message. To force a crash recovery, use the Open command instead of Text. We recommend that System Administrators periodically delete scratch files that are older than about 10 days. [Franµois Desrochers] Sorting Huge Datasets with Limited Disc Space ============================================= When you are selecting and sorting records from a large file, Suprtool does not know how many records might be selected by the If command, so it has to reserve enough sort scratch space in case every record is selected. On a system with an insufficient amount of free transient disc space, there may not be enough space for this temporary scratch file to be built. Suprtool allows you to reduce the size of the scratch file using the Numrecs command, but you have to know what value to use, either a specific number of records or a percentage of the input file. What do you do if you cannot predict how many records may be selected? One approach, in use at Redwood Health Services in Santa Rosa, CA, is to forget about Numrecs, and just use two Suprtool passes. The first pass selects the records without sorting them, putting the selected records into a file, then the second pass sorts the file. By default, the sort scratch file in the second pass is built exactly large enough for the number of records being read. :run suprtool.pub.robelle >base mybase >get bigdataset >if {...selection criteria...} >output myfile >xeq >input myfile >sort key-field >output=input >xeq The resulting file, myfile, has the selected records in the desired sequence. [Mike Shumko] Calculating Days Between Two Six-Digit Cross-Millennium Dates ============================================================= SmartDate’s library of date routines allows for converting and editing many different date formats. You usually provide it with one or two dates, indicate their format and what operation needs to be done. This operation can be either a validation, conversion or calculation. One of these calculations is to assign a century to a six-digit date based on some cut-off value. Another calculation is to determine the number of days between two dates. The problem arises when you want both operations to occur together. SmartDate only allows one a time. The solution is to use the RobelleCutoffYear JCW to accomplish both tasks. Here is some sample COBOL code to find the days between December 28, 1999 and January 6, 2000. move "281299" to from-datex6 move "060100" to to-datex6 move 0101 to rdt-from-type. move 01 to rdt-to-type. call "RDTCONVERT" using from-datex6 to-datex6 rdt-control if rdt-status of rdt-control = 0 then move rdt-aux-result to days-between display "Days between are : ", days-between. Don’t forget to set the JCW before running the program, otherwise you will get an error. : setjcw RobelleCutoffYear 50 Use this example to assume a century of 20xx for all dates that hold a value of less than 50 in the last two digits of the year. [Paul Gobes]