Previous Issue Index Next Issue

What's Up, DOCumentation? 1997 # 5


September 1997


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

The word from Chicago has been very positive. HP made quite a few announcements that please MPE users. Hereís a quick summary:

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]

Up to Table of Contents

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]

Up to Table of Contents

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]

Up to Table of Contents


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]

Up to Table of Contents

Suprtool Training Schedule

Space is still available for Suprtool training at Robelleís offices near Vancouver, Canada. These are the course dates:

We can also arrange private training at your site. If you are interested, contact us for more information.

[Rosemary Van Poelgeest]

Up to Table of Contents

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,

   >chain a-songs,song-title="w@"
    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@"
    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   <<Search Field >>
               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)  <<Indexed >>
            SUB-TITLE            X40    45
            ARTIST               X30    85  (M-ARTIST)  <<Indexed >>
            SONG-NO              J1    115
            SONG-TITLE           X40   117  (A-SONGS)  <<Indexed >>
      Capacity: 1004 (4)  Entries: 41  Highwater: 41  Bytes: 156
[Neil Armstrong]

Up to Table of Contents

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"]

Up to Table of Contents

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 ( , 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]

Up to Table of Contents

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.

test software

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"]

Up to Table of Contents

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.

[Francois Desrochers]

Up to Table of Contents

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.

   >base mybase
   >get bigdataset
   >if {...selection criteria...}
   >output myfile
   >input myfile
   >sort key-field
The resulting file, myfile, has the selected records in the desired sequence.

[Mike Shumko]

Up to Table of Contents

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

    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]

Up to Table of Contents