Previous Issue Index Next Issue


What's Up, DOCumentation? 1998 # 5

logo

October 1998


From:

To: Users of Robelle Software

Re: News of the HP 3000 and of HP-UX, 1998 #5

What You Will Find in This News Memo:






Qedit logo Get Ready for Qedit 4.7


Version 4.7 of Qedit has been released, with refined features and increased capabilities. U.S. and Canadian customers currently on support can expect to receive their new version by the end of November. International customers should receive theirs a month or two later. You can look forward to these new developments:

Qedit Supports Wide Records

For years Qedit has supported very long files, even up to 99,999,999 lines. Now with version 4.7, Qedit can handle extra wide records with 8,172 characters, up from the former limit of 1,000 characters. So no matter how big your data file, it’s pretty safe to say that you can edit it with Qedit!

Print Reports in Even and Odd Pages

New options on the List command allow you to control the number of pages produced on a hard-copy listing. $Even ensures there is an even number of pages in the report. $Odd ensures there is an odd number of pages.

Improved UDC Handling

Improvements on how Qedit handles UDCs with comments on the separator lines. A UDC separator is a line that starts with a single or double asterisk (*). Qedit simply ignores the rest of the line.

More Control of Timestamps

Qedit now lets you disable the timestamp warning when you use the Open and Keep commands. Timestamps continue to be stored in the workfile, but warnings no longer automatically appear with these commands. Even when you disable the warnings, you can still check the timestamp by using the Verify Keep or Verify Open commands.

[Paul Gobes]



Up to Table of Contents


Qedit logo Qedit for Windows Celebrates a Successful Year


Since Qedit for Windows was unveiled at last year’s HP World conference, it has been continually enhanced. Here are just a few of the new features we’ve added:

To see a complete list of the changes we’ve made since version 4.6, go to our Web page at www.robelle.com/products/qwin/news.html.

[Dave Lo]



Up to Table of Contents


Suprtool logo Suprtool Training

Robelle offers two-day classes on Suprtool. Recent "graduates" of the Suprtool Supr-School rated the course as excellent. Here are some of their comments:

Get course details on the Web at www.robelle.com/products/courses.html or call Mike Shumko for pricing and scheduling.

[Mike Shumko]



Up to Table of Contents


Book Review

Burn Rate--How I Survived The Gold Rush Years on the Internet by Michael Wolff

"Burn rate: the amount of money a promising start-up consumes each month in excess of its income. Burn capital too fast, and you are out of business; burn capital too slowly, and you risk falling behind in the competition to innovate, expand, and gain market share."

Michael Wolff takes us on a roller-coaster ride with his company, Wolff New Media LLC, as it grows from a three-person publishing company to a seventy person Internet start-up. Learn about East Coast content versus West Coast technology, familiar Internet start-ups (Netscape, Yahoo, Excite, and others), venture capitalists, bankers, and what you have to do as a CEO to keep the money coming to support the burn rate.

Read about the start of Wired magazine, the launch of Time Warners’ Pathfinder, and meet the Internet visionaries. You’ll read about companies that have gone from nothing to millions, even billions.

Burn Rate shifts between the highs of making deals and the lows of running out of money. Once a journalist by trade, Mr. Wolff’s ability to intrigue makes it difficult to put this book down. If you are in the software business or interested in the Web business, Burn Rate is worth reading.

[David Greer]



Up to Table of Contents


Staff Spotlight: Eunice Sheehan

eunice

If you’ve called Robelle with questions about your account, chances are you discussed the details with Eunice Sheehan.

Eunice has been with Robelle for a little over three years, and is still surprised by the frequency of her job "enrichment." She’s progressed from part to full time, with her profile of responsibilities growing along the way.

Eunice originally hails from Bradford, England in the county of Yorkshire. Before departing for Canada with her family in May of 1987, she studied Business and Commerce at Bradford and Newcastle Universities.

A true Vancouverite, Eunice enjoys hiking, bicycling, gardening and other outdoor pursuits. She is an avid reader, preferring biographies and mysteries. Eunice also volunteers time as a mentor in a College and Career youth group, helping young people stay focused and motivated. When you next chat with Eunice, perhaps she will do the same for you!

[Ken Robertson]



Up to Table of Contents


Qedit logo Final 16-Bit Version of Qedit for Windows

Because a vast majority of our customers indicated that they no longer have Windows 3.x systems, version 4.7 will be the last Qedit for Windows release that supports 16-bit Windows operating systems (Windows 3.x including Windows for Workgroups).

All new developments on Qedit for Windows will be on 32-bit operating systems (Windows 95, Windows 98 or Windows NT).



Up to Table of Contents


HP-UX 11.0 Drops Block Mode

Hewlett-Packard has changed its terminal drivers to Streams PTY and discontinued support for block mode in HP-UX v. 11.0. In this and later versions of HP-UX, full-screen visual mode will not work in Qedit/UX.

Robelle has contacted Hewlett-Packard about this issue, but has been unable to get this policy changed. As a result of HP’s decision, Qedit for HP-UX customers have the following options:

Robelle apologizes for any inconvenience this change has caused. If we can be of any assistance, please contact us by telephone, e-mail or fax.

[Paul Gobes]



Up to Table of Contents


Staying One Step Ahead

Are you tired of waiting for Robelle’s popular newsletter to make the rounds in your office? Would you like to receive our newsletter first, not last? Then send us your e-mail address and we will add you to our growing list of electronic mail readers. You’ll receive your copy automatically, without the wait.

Right now this is a text-only version, but otherwise it has all the same great Robelle news, tips and technical information you get in our printed version. Send your request by e-mail to support@robelle.com.



Up to Table of Contents


Cool New Listf Option

The latest Powerpatch to MPE/iX can show you who is accessing a file or program. This can really come in handy when you need to install new software. The listing below shows some interesting details:
    :listf qedit.pub.robhelle,8
    ********************
    FILE: QEDIT.PUB.ROBELLE
    7 Accessors(O:7,P:7,L:0,W:0,R:7),Share
    #S252  ROBYN,MGR.ISDEV     P:1,L:0,W:1,R:1 LDEV:13
    #S251  ROBYN,MGR.ISDEV     P:1,L:0,W:1,R:1 REM:198.14.25.10
    #S249  NEIL,MGR.SOURCE     P:2,L:0,W:2,R   REM:136.14.10.82
    #S240  FRANCOIS,MGR.SOURCE P:1,L:0,W:1,R:1 REM:201.13.15.11
    #J2339 MAILJOB,MGR.XPRESS  P:1,L:0,W:1,R:1 SPID:#O2492
    #J2337 KBLOAD,MGR.IS       P:1,L:0,W:1,R:1 SPID:#O2499

[Paul Gobes]



Up to Table of Contents


Emast File Chokes Store Command During Backups

We’ve had several support calls from folks who are seeing an error message in their backup jobs after their systems have been updated to MPE/iX 5.5.

The latest version of the MPE/iX Store command is more paranoid than earlier versions and chokes on the Emast file in Pub.Robelle. By incorrectly identifying Emast as the root file of a database, the command runs into a problem when it can’t find the associated datasets. In fact Emast is not a root file; it is a Priv file that was used only by the DBMGR program bundled into our Xpress e-mail application.

If you don’t have Xpress, you can delete Emast because it is just a relic of an expired Robelle demo tape.

[Hans Hendriks]



Up to Table of Contents


Suprtool logo Get vs. Chain in Suprtool

Which is faster, the Get or Chain command? Like many questions in the computer business, the answer is "it depends." It depends on how many records are in the database, how many chains you want to read, and the length of those chains.

The Get command always takes the same amount of time to read a given dataset, regardless of how many records you want to select. The Chain command takes more time as you select more chains and records. In other words, it’s data- dependent. So the question becomes, "Given that I want to select this many chains/records, which is faster, Get or Chain?"

Let’s try a few no-brainer examples. It’s pretty obvious that selecting against one key value should be done with the Chain command, and selecting 99% of the key values should be done with the Get command. But for less obvious numbers of records, where is the break even point where you should switch from Chain to Get? The question really is, "At what point do the Get and Chain commands take the same amount of time?"

When you know the answer to that question, you’ll know the best point to switch from using a Chain command (for low numbers) to Get a command (for higher numbers).

The balance point can be given in terms of the number of disc accesses (a.k.a. I/Os or input/output operations) it takes to read the data.

Suprtool’s Get command, as stated above, always takes the same number of I/Os to read a given dataset. Suprtool’s Get command reads up to 50,000 bytes of data with every disc access, so the rule of thumb is to multiply the number of records by the record size in bytes, then divide by 50,000. The resulting number is the approximate number of I/Os Suprtool will need to read the dataset. For example, our d-notes dataset has 155,054 80-byte records. The ballpark estimate is 248 disc accesses to read the whole dataset ([155,054 x 80] / 50,000 = 248).

The ballpark estimate does not take into account block sizes, the number of blocks that fit into Suprtool’s buffer, and other overhead bytes embedded in the records, but it’s accurate enough for a rough calculation. You can see the exact number of I/Os by doing a Suprtool Get task with statistics enabled (Set Stat On). The number appears in the Input FREAD calls. For example,

    >get d-notes
    >set stat on
    >out $null
    >xeq
    IN=155054, OUT=155054. CPU-Sec=6. Wall-Sec=7.
         ** INPUT **
    Input buffer (wds):           24576
    Input record len (wds):       40
    Input logical dev:            2
    Input FREAD calls:            281       <----- LOOK HERE
    Input elapsed-time (ms):      2915
    Input records/block:          23
    Input blocks/buffer:          24
As you can see, Suprtool is actually taking 281 I/Os to read the dataset in this example. That tells you the balance point for disc accesses.

But how do disc accesses relate to a specific number of chains or records? First you need to know the average number of records in each chain. If you know your data really well, you may already know this. If you’re not sure, Suprtool can help you figure it out, as can HowMessy.

Suprtool will tell you how many records there are in the dataset, and how many different chains. Divide one number into the other to see the average number of records per chain. For example,

    >get d-notes
    >sort key-field-name
    >dup none keys
    >out $null
    >xeq
    IN=155054, SEL=155054, OUT=3748. CPU-Sec=31. Wall-Sec=34.
In this example, the average chain has 41.3 records. (155,054 records / 3,748 keys = 41.3)

HowMessy can give you a dizzying number of statistics per dataset, including the average chain length. The following example is an abbreviated listing,

                                         ... Max    Ave    Std
    Data Set    Capacity Entries  Factor ... Chain  Chain  Dev
    D-NOTES Det 219098   155054   70.8%  ... 511    41.37  43.11
The last bit of information you need to know is exactly how Chain does its job, so that you can calculate the number of I/Os for a given Chain operation.

In detail datasets, for every key value you want to retrieve using Chain, Suprtool does one DBFIND (that’s one I/O) and as many DBGETs as there are records on the chain (assume one I/O per DBGET). So if the average chain has 41.3 records in it, then on average it would take 42.3 I/Os to retrieve the records for a given chain. If there are 10 key values (chains) to retrieve, it would take 423 I/Os (42.3 x 10 = 423).

For master datasets, there is no DBFIND, but there is still one DBGET per key value.

Now you can answer the basic question: "What is the balance point where Get and Chain take the same amount of time?" You already found that out (in our example it is 281 I/Os). Divide that by the average number of I/Os per chain (in our example it is 42.3), and you get the balance point in terms of the number of chains. The example numbers give a balance point of 6.6 chains (281 / 42.3 = 6.6). As long as you want the records from six or fewer chains, use a Chain command. If you want the records from more than six chains, use a Get command.

To code this choice in a job stream, where the key values you want to retrieve are stored in the file called Values, you would use the following commands:

    !
    !setvar number_of_chains,finfo("values",19)
    !
    !if number_of_chains > 6 then
    !
    !  run suprtool.pub.robelle
       base mybase
       get d-notes
       table t,key-field-name,file,values
       if $lookup(t,key-field-name)
       ...<other suprtool statements>

       xeq
       exit
    !
    !else
    !
    !  run suprtool.pub.robelle
       base mybase
       chain d-notes,key-field-name=t
       table t,key-field-name,file,values
       ...<other suprtool statements>

       xeq
       exit
    !
    !endif
    !
There is another cooler, sneakier way of doing this. Place the commands that are different into a file and perform a Use command of this file as part of a Suprtool task.

    !
    !setvar number_of_chains,finfo("values",19)
    !
    !if number_of_chains > 6 then
    !
    !  echo get d-notes > myfile
    !  echo if $lookup(t,key-field-name) >> myfile
    !
    !else
    !
    !  echo chain d-notes,key-field-name=t > myfile
    !
    !endif
    !
    !run suprtool.pub.robelle
     base mybase
     table t,key-field-name,file,values
     use myfile
     ...<other suprtool statements>

     xeq
     exit
    !
One obvious drawback of this method is that you have hardcoded the balance point (6) right into the job stream. If the balance point changes (because the size of the dataset has changed or the average number of records per chain changes) you will have to update this job stream, as well as the dozens of associated job streams you have coded.

How can you make job streams avoid using a hardcoded cutoff value? That’s the subject of part 2 of this article, which will appear in the next issue of What’s Up, DOCumentation?. Stay tuned.

[Mike Shumko]



Up to Table of Contents


Suprtool logo Adding Headings to HowMessy Web Pages

Some customers like to publish HowMessy reports directly to an internal Web page. Each time you run HowMessy, a temporary self-describing file is created called Loadfile. You can use STExport to convert this file to an HTML document. Here is how to add a heading:

    $in      loadfile
    $heading fieldnames
    $html    table title "Store Database Howmessy Report"
    $out     /apache/www/howmessy.html
    $exit
[Neil Armstrong]



Up to Table of Contents


Emergency Repair for NT Users

If you use NTFS on your PC hard drives, then you will want to pick up a DOS- based utility called DELPART and put it on your MS-DOS emergency boot disk. You do have one of those don’t you?

DELPART is a utility that allows you to delete an NTFS partition. FDisk will not do this. If you have to rebuild your PC from scratch and can’t get NT to recognize your CD-ROM, then you will need this utility.

I found DELPART at http://www.tmco.co.uk/nt.html.

[Neil Armstrong]



Up to Table of Contents


Qedit logo Multiple String Searches in Qedit--No Problem!

Finding just one string wasn’t quite good enough for one customer who wanted to have a file with many strings and then list all the occurrences, much like Suprtool’s Table command.

The Qedit command file below can be used to search a file for multiple strings and print them in the original line order. It takes 3 parameters: the filename of the file you want searched, the listname of the file of strings and the maximum length (stringlength) of each string. Save this command file as Findmany, then invoke it from inside Qedit:

    /findmany custlist, strings, 10
The command file loops through the Strings file. For each string, it saves the results in a temporary file and performs a Text command. The strings are cleaned up, sorted and printed. Here is the Findmany command file:

    parm filename, listname, stringlength
    purge found,temp
    setvar num,1
    setvar eof, finfo('!listname',19)
    while  num <= !eof do
      print !listname;start=!num;end=!num > temp
      input inline < temp
      setvar string str("!inline",1,!stringlength)
      :/list !filename "!string"  > >  found
      echo inside loop !string
      setvar num, num + 1
    endwhile
    /text found
    /deleteq "line found"
    /deleteq "lines found"
    /lsortq all
    /listq $lp all
[Paul Gobes]



Up to Table of Contents


Suprtool logo Form for Every Dataset

Consultant Greg McCoy at the Red Cross wanted the Form statement in Suprtool to act the same as Query, which performs the Form dataset command for every set. Here is a usefile that manipulates Form Sets to generate another usefile that does what he wants:

    :file formout;dev=disc
    form sets
    :reset formout
    in formout
    def pc,62,1
    if pc = "%"
    def set,4,16
    ext "fo ",set
    o use2,temp
    x
    u use2
    :file formout=$stdlist
[Paul Gobes]



Up to Table of Contents


Suprtool logo Neutralizing Positive-Signed Packed and Display Fields

Sometimes in IMAGE/SQL datasets, packed (Pn) and display (Zn) data type fields hold positive-signed data. To get Suprtool to convert these fields to neutral-signed data, you can use an arithmetic operation on the Extract command. In the example below, a zoned display field is entered with a positive sign. Notice the List command shows the sign and the Output command shows it with an alphabetic E overpunch.
    Item:
       CUST-ACCOUNT          Z8
    >get d-sales
    >extract cust-account
    >list
    >output *
    >x
    >GET D-SALES (8) >OUT $STDLIST (0)
    CUST-ACCOUNT    = +5
    0000000E	    {overpunch}

Now try the same task with an arithmetic operation on the Extract command:

    >get d-sales
    >extract cust-account = cust-account * 1 {multiply by one}
    >list
    >output*
    >x
    >GET D-SALES (8) >OUT $STDLIST (0)
    CUST-ACCOUNT    = 5
    00000005	    {no overpunch}

[Paul Gobes]



Up to Table of Contents


Streaming Workfiles to Other Software

One of our Swedish customers was using MAESTRO from CCC/UNISON (now TIVOLI) and wanted to pass the current Qedit workfile to its Mstream program.

The customer wanted

    /mstream *
to work the same way as

    /stream *
The Mstream command file contained:

    parm jobfile
    run
    MSTREAM.MAESTRO.CCC;info="!jobfile"
The following simple command file called Qstream can be used inside Qedit to create a temporary file that the Mstream UDC can read.

    1     /lq @ > tempfile
    2     mstream tempfile
Consultant Michael Abootorab enhanced this command file to be usable both inside and outside of Qedit, with a file name or with an asterisk (*).

    if bound(insideqedit) and insideqedit = 0 then
       mstream !filename
    else
       if '!filename'  = '*' then
          /holdq all {or lq @ > filename}
          mstream hold
       else
          mstream !filename
       endif
    endif
[Hans Hendriks]



Up to Table of Contents