home *** CD-ROM | disk | FTP | other *** search
/ ftp.robelle3000.ai 2014 / 2014.06.ftp.robelle3000.ai.tar / ftp.robelle3000.ai / newsletter / 1998 / w1998-06.txt < prev   
Text File  |  1998-12-21  |  26KB  |  731 lines

  1. What's Up, DOCumentation?
  2.  
  3.  
  4.  
  5.        Robelle Consulting Ltd.
  6.        Unit 201, 15399-102A Ave.
  7.        Surrey, B.C.  Canada  V3R 7K1
  8.        Toll-free:    1-888-ROBELLE
  9.                     (1-888-762-3553)
  10.        Phone:       (604) 582-1700
  11.        Fax:         (604) 582-1799
  12.        E-mail: support@robelle.com
  13.        Web: www.robelle.com
  14.  
  15. Date:  December 1998
  16.  
  17. From:  Robert M. Green, CEO
  18.        David J. Greer, President
  19.        Mike Shumko, Editor pro tem
  20.  
  21. To:    Users of Robelle Software
  22.  
  23. Re:    News of the HP 3000 and of HP-UX, 1998 #6
  24.  
  25.     What You Will Find in This News Memo:
  26.  
  27.     New Suprtool Date Functions
  28.     Qedit/iX 4.7.01 May Be Unreadable
  29.     Frequently Asked (and Answered) Questions
  30.        Y2K
  31.        Upgrading Your System?
  32.     Training Opportunities
  33.     Bug in MPE/iX Powerpatch 5
  34.     Newsletter Available by E-Mail
  35.     Robelle Attends User Meetings
  36.     Staff Spotlight: Dave Lo
  37.     User Manual on the Web
  38.     Qedit Screen Mode Also Works on HP Terminals
  39.     New Windows Scripting Offers More Power & Choice
  40.     Windows of the World Will Unite
  41.     Suprtool Tips
  42.        Find by Last Letter
  43.        Search for Binary Data Using ASCII Criteria
  44.     Part Two of Get vs. Chain
  45.     Can't Run Your Bonus Programs
  46.  
  47.  
  48.  
  49.  
  50.  
  51. New Suprtool Date Functions
  52. ===========================
  53.  
  54. The new $stddate function in Suprtool, introduced in our June issue, adds 
  55. flexibility to handling date fields. Now you can:
  56.  
  57. - compare dates with dissimilar formats
  58.  
  59. - update six-digit dates in any format to eight-digit ccyymmdd dates
  60.  
  61. - create extracts with four-digit years from records with two-digit years
  62.  
  63. - compare six-digit dates to system date variables after Dec. 31, 1999
  64.  
  65. - perform less-than and greater-than comparisons on noncollating dates
  66.  
  67. - sort on six-digit dates by using multiple passes
  68.  
  69. For more examples of each of these $stddate applications, see our Web page at 
  70. http://www.robelle.com/support/faq/stddate.html.
  71.  
  72. Another new feature in the current pre-release is the Mod operation, which 
  73. saves the remainder after a division operation. This is useful in selections 
  74. based on specific digits of packed or binary numeric fields. For example, you 
  75. can compare the dd portion of a ccyymmdd date against another field or 
  76. constant:
  77.  
  78.     >comment   find orders in first half of month
  79.     >get       order-detail
  80.     >item      order-date,date,ccyymmdd
  81.     >if        order-date mod 100 <= 15
  82.     >output    ordbegin
  83.     >xeq
  84.  
  85. Using the same concept and data, you can also compare the month portion of a 
  86. given date by using divide (/) and Mod together.
  87.  
  88.     >comment   find orders in Jan or Feb
  89.     >get       order-detail
  90.     >item      order-date,date,ccyymmdd
  91.     >if        order-date / 100 mod 100 <= 02
  92.     >output    ordbegin
  93.     >xeq
  94.  
  95. A pre-release of Suprtool with $stddate and Mod is available now. There is no 
  96. charge for upgrades to customers with support.
  97.  
  98. [Paul Gobes]
  99.  
  100.  
  101. Qedit/iX 4.7.01 May Be Unreadable
  102. =================================
  103.  
  104. This message is directed to our users in the U.S. who recently received Qedit 
  105. MPE 4.7.01 software update tapes dated "NOV. 98". These tapes were made using 
  106. a DDS drive that had hardware compression enabled. This means that on some 
  107. systems the tapes will not restore; the Restore command will produce an error 
  108. message.
  109.  
  110. If any computers on which you have licensed Qedit/iX have DDS drives that do 
  111. not support hardware compression, please let us know so that we can replace 
  112. your tape.
  113.  
  114. We apologize for the inconvenience this may cause you.
  115.  
  116. [Paul Gobes]
  117.  
  118.  
  119. Frequently Asked (and Answered) Questions Department
  120. ====================================================
  121.  
  122. Y2K
  123. ---
  124. Not surprisingly, the most frequently asked questions these days are related 
  125. to Robelle's products and Year 2000. Most of your questions are answered at 
  126. http://www.robelle.com/support/faq/year2000.html.
  127.  
  128. Like everybody else, we are undergoing our own Y2K readiness program so that 
  129. we'll be able to continue doing business with you. The book Year 2000 in a 
  130. Nutshell from O'Reilly has been very helpful. It looks at the issues from a 
  131. number of perspectives, including managerial, legal, and technical, and 
  132. provides a master plan for conversion projects. 
  133.  
  134. Upgrading Your System?
  135. ----------------------
  136. If you are upgrading your computer system within the same platform (e.g., 
  137. from a series 9xx to another 9xx), the existing versions of your Robelle 
  138. products continue to work, free of charge. If you are adding a new system (as 
  139. opposed to upgrading or swapping), we offer generous licensing discounts on 
  140. additional systems. 
  141.  
  142. If you are upgrading your O/S version, remember to check our Web pages for 
  143. compatibility information. In general, you need to upgrade your Robelle 
  144. products only if you want to take advantage of new features introduced in the 
  145. new O/S. There is no charge for upgrades to customers with support.
  146.  
  147. If you are going to upgrade to a new O/S, we recommend these specific 
  148. versions of our products:
  149.  
  150. - For MPE/iX 5.5, we recommend Qedit 4.4 or later, and Suprtool 3.8 or later.
  151.  
  152. - For MPE/iX 6.0, we recommend Qedit 4.6.02 or later, and Suprtool 4.1.04 or 
  153.   later.
  154.  
  155. [Mike Shumko]
  156.  
  157.  
  158. Training Opportunities
  159. ======================
  160.  
  161. Want to find out about Robelle's two-day classes on Suprtool? Get course 
  162. details at our Web site (http://www.robelle.com/products/courses.html).
  163.  
  164. If you need more information about pricing and scheduling, call Mike Shumko 
  165. at 1-888-ROBELLE.
  166.  
  167. [Mike Shumko]
  168.  
  169.  
  170. Bug in MPE/iX 5.5 Powerpatch 5
  171. ==============================
  172.  
  173. MPE/iX 5.5 Powerpatch 5 contained a performance enhancement patch for 
  174. operations that return unused disc space. Some customers discovered a bug in 
  175. this patch, however, when they performed a DBUTIL Erase operation, which 
  176. resulted in problems with their database.
  177.  
  178. A DBUTIL Erase asks the file system to reset the EOF and then fill the file 
  179. with zeros, from the beginning of the file to the old EOF. It then calls 
  180. FWRITEDIR to set the EOF. The problem was with the fill disc operation, which 
  181. was not completely erasing the space properly.
  182.  
  183. Typically, a customer can recognize this error from the following messages on 
  184. DBPUT operations. For detail datasets:
  185.  
  186.     TURBOIMAGE ERROR AT $00016710; RETURN STATUS = -3
  187.     DBPUT, MODE 1, ON <dataset> OF <database>
  188.     MPE FILE ERROR 0 RETURNED BY FREADDIR ON ROOT FILE
  189.  
  190. For master datasets DBPUT operations fail with 
  191.  
  192.     DUPLICATE KEY VALUE IN MASTER 3) (dberror 43)
  193.  
  194. Any program that uses a similar strategy to either erase a file or return 
  195. unused disc space may corrupt the file. The risk is greater with large files 
  196. or files that have user labels such as database files, KSAM files or QUIZ 
  197. subfiles.
  198.  
  199. The problem is not limited to MPEKX79 in Powerpatch 5; it also exists in 
  200. these patches: MPEKXE4, MPEKXB5, MPEKX94, MPEKXE9 and MPEKXG6. The patch that 
  201. HP has developed to fix this problem (MPEKXJ3) is incorporated in Powerpatch 
  202. 6.
  203.  
  204. To easily identify the problem in your system, use this simple Qedit script 
  205. file:
  206.  
  207.     /t hpswinfo.pub.sys
  208.     /list "MPEKX79"
  209.     /list "MPEKXB5"
  210.     /list "MPEKXE4"
  211.     /list "MPEKXE9"
  212.     /list "MPEKX94"
  213.     /list "MPEKXG6"
  214.  
  215. [Neil Armstrong]
  216.  
  217.  
  218. Newsletter Available by E-Mail
  219. ==============================
  220.  
  221. You can subscribe to the paperless What's Up, DOCumentation? newsletter by 
  222. sending a request to support@robelle.com with your name and e-mail address. 
  223.  
  224. You can also read the on-line version at http://www.robelle.com/newsletter/.
  225.  
  226.  
  227. Robelle Attends User Meetings
  228. =============================
  229.  
  230. Robelle was recently invited to attend the Mortech and Software Research 
  231. Northwest user group meetings for applications that use Suprtool.
  232.  
  233. Mortech's application is Mail Order Cataloging. The users got together with 
  234. the application developers at Mortech's Little Rock, AK base to discuss the 
  235. system and how they use it. An impressive demo of ODBC was given by Curtis of 
  236. Palladin Press. Other presentations were given by Adager, HP and Robelle. 
  237. Rounding out this great meeting was a tour of the new offices and dinner at a 
  238. local brewery.
  239.  
  240. A week later in Washington, D.C., the Software Research Northwest (SRN) users 
  241. group gathered. Their application is used in student administration settings, 
  242. and many leading U.S. universities and colleges were present. SRN's system 
  243. has been enhanced to have a Web front-end that allows students, faculty and 
  244. administrators to enter and review their data. Wayne Holt and his SRN team 
  245. busily mixed with users throughout the sessions and into the more sociable 
  246. side of the meeting.
  247.  
  248. I'd like to thank the hosts for inviting Robelle, and thank all those who 
  249. attended the Suprtool tutorials.
  250.  
  251. [Paul Gobes]
  252.  
  253.  
  254. Staff Spotlight: Dave Lo 
  255. ========================
  256.  
  257. Dave Lo has been with Robelle for nine years now, but only lately has his 
  258. profile been raised. He started out working on our Bonus and QLIB programs, 
  259. the Qedit product and UNIX-related projects. A year ago Dave became more well 
  260. known among Robelle users when he joined the Tech Support team. Now, he co-
  261. ordinates our technical documentation and is currently the Robelle Webmaster.
  262.  
  263. Dave came to Canada from Hong Kong in 1974. He earned his Computer Science 
  264. degree at the University of British Columbia in Vancouver. He then worked on 
  265. PC psychiatric software ("You don't have to be crazy to work here, but it 
  266. helps.") before joining Robelle. Dave practices Qigong (pronounced chee-gung) 
  267. which is similar to the meditative aspects of Tai Chi. He maintains an 
  268. extensive Qigong Web site at http://www.robelle.com/~dlo/qigong/.
  269.  
  270. [Paul Gobes]
  271.  
  272. Editor's note: You can get on-line information about all your favorite 
  273. Robellians in the updated company brochure at http://www.robelle.com/
  274. robelle.html.
  275.  
  276.  
  277. User Manual on the Web
  278. ======================
  279.  
  280. Until now, the only way you could get a Qedit for Windows User Manual or 
  281. Quick Start Guide was to get a printed copy from Robelle or your distributor. 
  282. Starting with the latest version of Qedit for Windows, these documents are 
  283. available for download in Adobe Acrobat PDF format. All you need is the free 
  284. Adobe Acrobat Reader to view or print the documents.
  285.  
  286. The PDF files can be downloaded from Robelle at http://www.robelle.com/
  287. products/qwin/download.html.
  288.  
  289. [Dave Lo]
  290.  
  291.  
  292. Qedit Screen Mode Also Works on HP Terminals
  293. ============================================
  294.  
  295. In our previous newsletter we advised that HP was no longer supporting block-
  296. mode in HP-UX version 11. (See http://www.robelle.com/library/newsletter/
  297. w1998-05.html#hp-ux.) We suggested using Qedit's screen mode, which had been 
  298. designed primarily for VT terminals.
  299.  
  300. What we didn't make clear was that screen mode works equally well if you use 
  301. an HP terminal (or PC software emulating an HP terminal). Screen mode uses 
  302. character-mode keystrokes in a full-screen environment, and enables features 
  303. such as "live" scrolling, cutting-and-pasting, splitting and joining lines, 
  304. etc. Enter Help VT at the Qedit/UX prompt for more information.
  305.  
  306. Screen mode uses the HP-UX curses library to make it terminal-independent.
  307.  
  308. [Hans Hendriks]
  309.  
  310.  
  311. New Windows Scripting Offers More Power & Choice
  312. ================================================
  313.  
  314. For years, the only scripting language available for MS Windows has been the 
  315. original MS-DOS batch language. While tools like WinBatch have been 
  316. available, they are difficult to use and error-prone because they work at the 
  317. user interface level (simulating user actions such as selecting menu 
  318. commands). Microsoft has now released its own scripting language: Windows 
  319. Scripting Host (WSH).
  320.  
  321. Once you have installed WSH, you can write your scripts in either VBScript or 
  322. JScript. Both VBScript and JScript are much more powerful languages than the 
  323. old MS-DOS command language. With scripts you can:
  324.  
  325. - automate tasks
  326.  
  327. - access the file system, to create, open, read, or write to files
  328.  
  329. - create instances of COM objects, such as Microsoft Excel (e.g., start
  330.   Excel, create a new worksheet, and then add data to it)
  331.  
  332. Installing WSH
  333.  
  334. Although WSH is bundled with Windows 98, you must select it as part of the 
  335. installation. You can download a version for Windows 95 or Windows NT 4.0 
  336. from http://msdn.microsoft.com/scripting.
  337.  
  338. After installing WSH, you have two new programs to choose from: Wscript or 
  339. Cscript. Wscript is short for Windows Script and Cscript is short for Command 
  340. Script. Both tools accept and run any script. Wscript provides a Windows 
  341. dialog box for running the script, while Cscript is more appropriate for 
  342. running a script from the MS-DOS prompt in Windows 95 or 98, or from the 
  343. command prompt in Windows NT.
  344.  
  345. You can make either Wscript or Cscript the default for running scripts.  
  346. Files ending in .vbs are assumed to be VBScript and files ending in .js are 
  347. assumed to be JScript. Because I happen to be a C/C++ programmer, and JScript 
  348. uses a more C-like syntax than VBScript, the remaining examples in this 
  349. article are in JScript. But the nice thing about WSH is that you can choose 
  350. your scripting language; if you are more comfortable in Visual Basic, use 
  351. VBScript instead.
  352.  
  353. First Example 
  354.  
  355. Our first example will echo any command-line parameters. Obtaining the 
  356. command-line parameters and echoing them require access to the WSH shell 
  357. object. We'll first show you the script, then explain how it works:
  358.  
  359.     /* Sample script to echo command-line parameters.
  360.         Copyright Robelle Consulting Ltd. 1998
  361.     */
  362.     // Version number for this script
  363.     var Version = "Version 1.0";
  364.     // Shell object needed for command-line access and echoing
  365.     var WSHShell   = WScript.CreateObject("WScript.Shell");
  366.     function Welcome()
  367.     {
  368.         WScript.Echo("First Sample WSH Script " + Version);
  369.         WScript.Echo("Copyright 1998 Robelle Consulting Ltd.");
  370.     } /* Welcome */
  371.     function EchoScriptParameters()
  372.     {
  373.         var args = WScript.Arguments;
  374.     if (args.Count() == 0)
  375.         WScript.Echo("There are no command-line arguments");
  376.     else
  377.         for (inx = 0; inx < args.Count(); inx++)
  378.             WScript.Echo(args.Item(inx));
  379.     }
  380.     //  Mainline
  381.         Welcome();
  382.         EchoScriptParameters();
  383.  
  384. Explaining the Example
  385.  
  386. We start the script with a comment. Multi-line comments start with /* and end 
  387. with */. Single line comments start with // (everything from // to the end of 
  388. the line is ignored by JScript). The first statement is
  389.  
  390.     var Version = "Version 1.0";
  391.  
  392. This statement creates a variable called Version, which is a string with a 
  393. value of Version 1.0. You refer to the variable by using its name, Version. 
  394. Like C, JScript is case-sensitive so that the variable name in title case 
  395. (Version) is not the same as the variable name in lowercase (version). We 
  396. then create an object with the statement.
  397.  
  398.     var WSHShell   = WScript.CreateObject("WScript.Shell");
  399.  
  400. The WScript.Shell object is part of WSH. This object gives you access to 
  401. command-line arguments, environment variables, Windows shortcuts, and other 
  402. useful objects for scripting. Use the WSHShell object to:
  403.  
  404. - echo strings to stdlist
  405.  
  406. - gain access to the command-line arguments object
  407.  
  408. Functions
  409.  
  410. The next group of statements declare a function:
  411.  
  412.     function Welcome()
  413.     {
  414.         WScript.Echo("First Sample WSH Script " + Version);
  415.         WScript.Echo("Copyright 1998 Robelle Consulting Ltd.");
  416.     } /* Welcome */
  417.  
  418. This function writes lines to stdlist using the WScript.Echo method. We can 
  419. concatenate two strings together by using the + operator. The first string 
  420. that we echo concatenates a constant (First Sample WSH Script) with a 
  421. variable (Version). Although this first example does not contain these 
  422. features, functions in JScript can have parameters and can return results.
  423.  
  424. Command Line Processing
  425.  
  426. The EchoScriptParameters() function echoes each command-line argument to 
  427. stdlist:
  428.  
  429.     function EchoScriptParameters()
  430.     {
  431.         var args = WScript.Arguments;
  432.     if (args.Count() == 0)
  433.         WScript.Echo("There are no command-line arguments");
  434.     else
  435.         for (inx = 0; inx < args.Count(); inx++)
  436.             WScript.Echo(args.Item(inx));
  437.     }
  438.     
  439. How do we access the command-line arguments? We have to use an object to do 
  440. this. We create the args object with 
  441.  
  442.     var args = WScript.Arguments;
  443.  
  444. The args object has the properties and methods that we need. The Count() 
  445. method returns the number of command-line arguments. Because we want our 
  446. script to echo something reasonable, even if no command-line arguments are 
  447. present, we check to see if there are zero arguments. If there are arguments, 
  448. we iterate through each of them using
  449.  
  450.     for (inx = 0; inx < args.Count(); inx++)
  451.         WScript.Echo(args.Item(inx));
  452.  
  453. The for loop uses standard C notation. The interesting part of it is
  454.  
  455.     args.Item(inx)
  456.  
  457. Remember that args is the WScript.Arguments object. Each command-line 
  458. argument is referred to by index. The first argument is args.Item(0), the 
  459. second is args.Item(1), and so on. We use the variable name inx to loop 
  460. through each possible argument, passing the value of the argument to the 
  461.  
  462.     WScript.Echo() method, where it is displayed on stdlist.
  463.  
  464. Invoking Functions
  465.  
  466. We finish our script with the main controlling part. For this script, it is 
  467. simple-we invoke the Welcome() and EchoScriptParameters() functions that we 
  468. wrote.
  469.  
  470.     Welcome();
  471.     EchoScriptParameters();
  472.  
  473. Note that you must specify parentheses () when invoking a function. 
  474. Otherwise, JScript assumes you are referring to a variable instead of a 
  475. function.
  476.  
  477. Invoking the Script
  478.  
  479. Our script is designed to run from Cscript. You can run this script from 
  480. Wscript, but each Echo() would result in a separate message box (which you 
  481. would have to dismiss). Assume that this script is in the file called 
  482. first.js. You would then invoke it as follows (user input is underlined):
  483.  
  484.     cscript first.js
  485.     ----------------
  486.         Microsoft (R) Windows Scripting Host Version 5.0 for Windows
  487.         Copyright (C) Microsoft Corporation 1996-1997. All rights .
  488.         First Sample WSH Script Version 1.0
  489.         Copyright 1998 Robelle Consulting Ltd.
  490.         There are no command-line arguments
  491.  
  492. Our second example below shows how to invoke Cscript, preventing it from 
  493. showing the Microsoft banner and passing three parameters called One, Two, 
  494. and Three:
  495.  
  496.     cscript //nologo first.js One Two Three
  497.     ---------------------------------------
  498.         First Sample WSH Script Version 1.0
  499.         Copyright 1998 Robelle Consulting Ltd.
  500.         One
  501.         Two
  502.         Three
  503.         Summary
  504.  
  505. With Windows Scripting Host, Microsoft has provided a new set of powerful 
  506. scripting features for the MS Windows platform. Both JScript and VBScript 
  507. offer powerful programming features, and the ability of these scripts to 
  508. control objects makes them very useful. For example, Robelle has been using 
  509. JScript to automate a number of processes.
  510.  
  511. In our next issue, we'll discuss creating an Excel spreadsheet.
  512.  
  513. [David Greer]
  514.  
  515.  
  516. Windows of the World Will Unite
  517. ===============================
  518.  
  519. Starting in 1999, all versions of Windows will share the same name. Windows 
  520. 2000 is Microsoft's new name for all upcoming operating systems currently 
  521. known as Windows 98, Windows NT Workstation, and Windows NT Server.
  522.  
  523. Windows NT 5.0 will now be called Windows 2000, and will start appearing in 
  524. 1999. There will be one desktop version, called Windows 2000 Professional, 
  525. and three server versions of Windows 2000. Server versions will support 
  526. different numbers of processors and clustering. Price options for new 
  527. versions may be closer to each other than the current pricing of NT Server's 
  528. standard and enterprise editions, which can differ by a factor of ten. 
  529. Eventually, a 64-bit version of the O/S will offer increased performance over 
  530. the 32-bit version.
  531.  
  532. Windows 98 is the final consumer O/S with 16-bit components. A true 32-bit 
  533. NT-based O/S will replace it in two to two and a half years, and will carry a 
  534. 200x year designation.
  535.  
  536. [Mike Shumko]
  537.  
  538.  
  539. Suprtool Tips
  540. =============
  541.  
  542. Find by Last Letter
  543. -------------------
  544. Q: Our mail-order company wants to do a mailing to the young-and-hip 
  545. generation with selection based on the first name (the perfect criteria). Is 
  546. there a way to find all names that end in a certain letter? For example, all 
  547. names that end in i (e.g., Nicki, Kerri, Jenni, Tori).
  548.  
  549. A: Use Suprtool's pattern matching capabilities:
  550.  
  551.     >if firstname=="@i~"
  552.  
  553. This tells Suprtool to look for any letters, followed by an i, followed only 
  554. by zero or more blanks.
  555.  
  556. Search for Binary Data Using ASCII Criteria
  557. -------------------------------------------
  558. Q: The field in the dataset is in I2 binary integer format, but the external 
  559. flat file (myfile) with the search values is in ASCII:
  560.  
  561.     123456789
  562.         88772
  563.        012345
  564.  
  565. A: Convert the file of ASCII values to binary.
  566.  
  567.     >input     myfile
  568.     >define    disp-num,1,9,display
  569.     >define    i2-num,1,4,integer
  570.     >extract   i2-num = disp-num
  571.     >output    file2
  572.     >xeq
  573.  
  574. Then search the dataset using the binary values.
  575.  
  576.     >get       my-dset
  577.     >table     tab,my-keyfield,file,file2
  578.     >if        $lookup( tab,my-keyfield )
  579.     >output    result
  580.     >xeq
  581.  
  582. [Dave Lo]
  583.  
  584.  
  585. Part 2 of Get vs. Chain 
  586. =======================
  587.  
  588. In the last issue of this newsletter we discussed how you can determine which 
  589. Suprtool command, Get or Chain, would be more efficient at reading records 
  590. with particular key values in a detail dataset. In this article we discuss 
  591. how to automate the Get vs. Chain choice.
  592.  
  593. Remember that the goal is to find the point at which Get and Chain take the 
  594. same amount of I/O. The key ingredients in the calculation are:
  595. the number of I/Os Suprtool uses to read the entire dataset
  596. the average number of records in each chain
  597.  
  598. Number of Suprtool I/Os
  599.  
  600. It is possible to figure out the first number theoretically, but it is far 
  601. easier to have Suprtool tell us how many I/Os it actually uses. This piece of 
  602. a job stream can make the necessary calculation:
  603.  
  604.     !purge outfile,temp
  605.     !run suprtool.pub.robelle>outfile
  606.     set       statistics on
  607.     set       progress 0
  608.     base      mybase
  609.     get       d-notes
  610.     output    $null
  611.     exit
  612.     !
  613.     !run qedit.pub.robelle
  614.     text      outfile
  615.     delete    "FREAD"(nomatch)
  616.     change    1/30 "setvar d_notes_suprtool_fread_count "
  617.     keep      outfile1
  618.     exit
  619.  
  620. It runs Suprtool, redirecting its $stdlist to a file that we post-process 
  621. with Qedit (any text editor will do, even POSIX text-processing tools). The 
  622. result is a command file, outfile1, which contains a Setvar command that sets 
  623. a variable with the number of I/Os.
  624.  
  625.     setvar d_notes_suprtool_fread_count 293
  626.  
  627. Average Number of Records per Chain
  628.  
  629. HowMessy, a Bonus program that comes free with Suprtool, can tell you the 
  630. average chain length of a dataset. HowMessy reports this information in two 
  631. ways: it prints a report, and it writes a self-describing file with the data. 
  632. The following piece of a job stream shows how to analyze the self-describing 
  633. file:
  634.  
  635.     !run howmessy.pub.robelle;info="p"
  636.     trial
  637.     d-notes
  638.     {blank line = no more datasets}
  639.     {blank line = no more databases}
  640.     !
  641.     !run suprtool.pub.robelle
  642.     input     loadfile
  643.     if        dataset = "D-NOTES"
  644.     define    integer,1,2,integer
  645.     extract   "setvar d_notes_ios_per_chain "
  646.     extract   integer = avechain
  647.     extract   " + 1"
  648.     output    outfile2,ascii
  649.     exit
  650.  
  651. The result is another command file, outfile2, which contains a Setvar command 
  652. that sets a variable with the average number of I/Os needed to read a chain:
  653.  
  654.     setvar d_notes_ios_per_chain    42  + 1
  655.  
  656. The assumption for reading detail datasets by chain is that every record 
  657. takes one I/O for each DBGET, plus each key value in the chain needs one I/O 
  658. for every DBFIND. Therefore the number of I/Os is the number of records plus 
  659. one.
  660.  
  661. Calculate the Break-Even Point
  662.  
  663. With the results of the two prior steps, you can figure out the break-even 
  664. point at which Get and Chain take about the same amount of I/O. This value is 
  665. expressed as a number of chains.
  666.  
  667.     !outfile1
  668.     !outfile2
  669.     !setvar d_notes_break_even d_notes_suprtool_fread_count / &
  670.     !    d_notes_ios_per_chain
  671.  
  672. Don't Recalculate Every Time!
  673.  
  674. The goal of this exercise is for your job streams to work at top efficiency. 
  675. It would be terribly inefficient to recalculate the break-even point every 
  676. time you need it. We suggest that you create the command files only once a 
  677. week, or as often as you normally run HowMessy. Save the final command file 
  678. with a name that matches the name of the dataset (e.g., dnotes).
  679.  
  680.     !echo setvar d_notes_break_even !d_notes_break_even > dnotes
  681.     !save dnotes
  682.  
  683. Then invoke the following one-line command file as needed:
  684.  
  685.     !dnotes
  686.     !
  687.     !setvar number_of_chains,finfo("values",19)
  688.     !
  689.     !if number_of_chains > d_notes_break_even then
  690.     !
  691.     !   {run suprtool with a Get command}
  692.     !
  693.     !else
  694.     !
  695.     !   {run suprtool with a Chain command}
  696.     !
  697.     !endif
  698.  
  699. [Mike Shumko]
  700.  
  701.  
  702. Can't Run Your Bonus Programs?
  703. ==============================
  704.  
  705. We get regular support calls asking: "Qedit or Suprtool is running fine, but 
  706. HowMessy doesn't want to run because it says it has expired. What's up?" 
  707. What's up is that you probably didn't quite finish the installation 
  708. instructions. 
  709.  
  710. Robelle distributes update tapes for MPE products with all the necessary 
  711. files for a full installation of the primary product (e.g., Suprtool), the 
  712. Bonus programs (e.g., HowMessy), and the QLIB programs (e.g., Prose). But the 
  713. files have "safe" file names, so that by restoring the files you don't 
  714. immediately overwrite the production version of the software. Suprtool is on 
  715. the tape as SuprCM and SuprNM, HowMessy is there as MessyCM and MessyNM, etc. 
  716.  
  717. Streaming the installation job copies your current version into the PubOld 
  718. group and renames the new version (xxCM or xxNM as appropriate) into the Pub 
  719. group.
  720.  
  721. But there are separate job streams for Suprtool, Qedit and the Bonus 
  722. programs: Install.Suprjob.Robelle installs Suprtool, Install.Qeditjob.Robelle 
  723. installs Qedit, and Bonus.Job.Robelle installs the Bonus programs.
  724.  
  725. So if your version of HowMessy (or Spell, Select, Compare or Xpedit) has 
  726. expired, but your primary products have not, chances are all you need to do 
  727. is stream Bonus.Job.Robelle.
  728.  
  729. [Hans Hendriks]
  730.  
  731.