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: April 2000 From: Robert M. Green, CEO David J. Greer, President Jennifer Franklin, Editor pro tem To: Users of Robelle Software Re: News of the HP 3000 and of HP-UX, 2000 #2 What You Will Find in This News Memo: New Technology Empowers Qedit for Windows Users Introducing Suprtool 4.3 Calculating the Difference Between Any Two Dates Robelle's Web-Enabling Think Tank The HP e3000 Is Reality, Not Hype Tired of the Command Interpreter? Drop It! Upcoming Events In 2000 Inventory Reduction Sale New Web Site for Robelle Distributor in Australia Speed Demon Saves Hours in Only Fifteen Minutes Adding A Sequential Number to A Data File Using Regular Expression to Create HTML Headings Whose Line Is It Anyway? This Newsletter Available by E-mail New Technology Empowers Qedit for Windows Users =============================================== System Commands and the Qedit Scripting Language Provides Users with a Highly Integrated and Customizable Solution The ability to execute HP host system commands from within the Qedit for Windows client has been the most popular customer request, echoing a longtime favorite of Qedit for HP e3000 and HP-UX users. This powerful functionality provides a Windows development environment that is strongly integrated with users' HP systems. For example, host commands such as Listf or Showjob can be executed and controlled directly from the Qedit client, with results appearing in the host command dialog box. There is no need to switch back and forth from the editor to the MPE or HP-UX session. Similarly, developers can write or modify source code and then compile their programs directly from the Qedit client. Compile error messages will appear in the dialog box for convenient fixing. Not to be overshadowed by host commands, the Qedit Scripting Language (QSL) will also be released in Qedit for Windows Version 4.9. QSL allows users to control the powerful underlying Qedit file objects and file operations. This means that any repetitive task that has an editing or program development component can be automated with a Qedit script. Users can create their own scripts for custom editing needs or simply invoke scripts that have been set up for them to facilitate organizational procedures. What's more, scripts can be invoked in real-time or scheduled for batch execution. Says David Greer, president of Robelle and lead software architect, "This innovative new technology offers a level of customization and process automation above and beyond anything found in other Windows editors." Used in concert, these huge advancements in Qedit for Windows equal a sum greater than their parts in allowing users to invoke host commands through scripting. For example, contributed Qedit scripts such as "COBOL Compile" or "C Compile" invoke the HP compiler on the e3000 or HP-UX and return the results to the host commands dialog box for further processing. To help you get started with QSL, a library of contributed scripts will be included with the new release. Also, a collection of scripts will be available on the Robelle website at http://www.robelle.com/support/qwin/scripts/ In addition to the regular Qedit for Windows user manual, an additional QSL user manual will be distributed with the new version. Finally, Robelle Technical Support is available to help users get started with scripting. Please do not hesitate to contact Tech Support at 1-888-ROBELLE. How Do I Get the Latest Version? Supported customers will need versions 4.9 of the Qedit Server Module and the Qedit client. Please contact Robelle to request this latest upgrade. If you are not already licensed for Qedit for Windows and would like to try it, free thirty-day demos are available at http://www.robelle.com/products/qwin/info.html [Nicky Gunther] Introducing Suprtool 4.3 ======================== Highlights Include Variable Substitution and Support for Large Files in MPE 6.5 Suprtool 4.3 will hit the desks of supported North American customers at the beginning of May (overseas customers can expect their update about a month later). With the release of MPE 6.5, HP e3000 customers will enjoy a huge increase in the filesize capacity of the e3000. Robelle's technical team has been working closely with Hewlett-Packard and the AMISYS healthcare application vendor, HBOC Payor Solutions Group, to make Suprtool compatible with much bigger files. Specifically, the capabilities of Suprtool have been increased from the old limit of 4 GB to the greatly expanded limit of 128 GB - an order of 32 times. Similarly, on HP-UX, the new Suprtool release offers support for bigger filesizes for all three modules of Suprtool/UX: Suprtool, Suprlink, and STExport. Each of these modules can now support files that contain up to 2.1 billion records. Many Suprtool users will be happy to hear that the second major enhancement in Suprtool 4.3 is "variable substitution" thus closing one of the most popular enhancement requests ever submitted for Suprtool. Variable substitution allows the use of CI variables directly inside Suprtool, Suprlink, and STExport, eliminating the need to define temporary use files to handle these tasks. Additionally, this year's release incorporates more arithmetic functions on numeric data types. For example, Suprtool now allows you to truncate numbers instead of rounding. Suprtool will also compute the absolute value of a number. To finalize Suprtool's date functionality, PHDate and Julian Day Number have been added to the list of supported date types. With Julian Day support and the $DAYS command, Suprtool can now compute the number of days between any two dates. [Nicky Gunther] Calculating the Difference Between Any Two Dates ================================================ Suprtool now has the ability to select records based on the difference between two dates. The $DAYS function, available in Suprtool 4.3's IF and EXTRACT commands, converts a date to a number. By converting two dates to numbers, then subtracting one number from the other, you can get the number of days difference between the two dates. Example: find the orders that shipped more than a week after ordering, and extract the order number and number of days it took to ship get order-header item order-date,date,yyyymmdd item ship-date,date,yyyymmdd if $days(ship-date) - $days(order-date) > 7 extract order-number define number-of-days,1,2,integer extract number-of-days = & $days(ship-date) - $days(order-date) ... $DAYS converts any valid date to a Julian day number (the number of days since 4713 BC). If a date is not valid, $DAYS returns a zero instead of a Julian day number. Therefore it is important to be sure that the dates are valid, or your results may not be predictable. For example, in the example above, if an order has not yet been shipped, the SHIP-DATE field will probably be blank, zero, or some other special value. In that case the calculation will probably return a negative number. This may or may not deliver the desired result, depending on what you are trying to accomplish. To be sure of getting the right results, you need to ensure that the date fields have valid dates. The $INVALID function of the IF command can do this for you. For example: if not $invalid(ship-date) and & not $invalid(order-date) and & $days(ship-date) - $days(order-date) > 7 For more information, see the documentation that accompanies the Suprtool 4.3 update, or call us if you have any questions. [Mike Shumko] Robelle's Web-Enabling Think Tank ================================= Traditionally, Robelle is known as a product or tools company. In fact, many customers use the word "Robelle" interchangeably with our product names, e.g. "We're installing Robelle tomorrow" versus "We're installing Qedit and Suprtool tomorrow." In 2000, we're aiming to change this product- or tool-focused perception of Robelle to a whole solutions focus. We're working harder and digging deeper to uncover customer problems and striving to recommend the smartest solutions. Our solutions may be built on a variety of different hardware and software technologies, whatever combination makes the most sense in accomplishing a customer's unique objective. One of our strengths is knowing how to piece together - and, indeed, where to find - all the technology components and people resources required to solve a given IT problem. We are turning these skills toward the e-business arena with our new "Web-Enabling Think Tank", a free service to our customers until October 31st, 2000. Our new Think Tank offer gives you access to Robelle's complete team of technical experts who will study the e-business challenges facing your company. Whatever your particular challenge may be, we promise to deliver to you three pieces of advice that will, in turn, help you deliver a smart solution to your company. Our aim is to give you down-to-earth trustworthy advice and use our think tank synergies to give you a head start. If you would like to submit a problem or challenge to the Robelle Think Tank, please visit http://www.robelle.com/couponbook/ For those of you who have already converted existing applications (or document publishing or report generation or...) to the Internet/Intranet, we'd love to hear your story and (with your permission) share it with other customers in upcoming issues of What's Up, DOCumentation? You can e-mail your story to us at solutions@robelle.com [Nicky Gunther] The HP e3000 Is Reality, Not Hype ================================= By now you have heard that Hewlett-Packard has renamed the HP 3000 to the HP e3000. Some vendors make a habit of announcing new products long before they will be delivered (if ever). In this case, however, HP is just catching up with the 3000 customers and the enthusiastic 3000 programmers. Starting way back in 1995 (ancient history in Internet time), Mark Bixby, Mark Klein, Mike Yawn, Lars Appel, and many others ported the essential Internet and Web infrastructure to MPE/iX: GNU C++, DNS, Bind, Sendmail, Java, Perl, Apache, Java servlets, and Python. HP 3000 customers were not slow in taking advantage of these tools. For example, e3000 site PayMaxx offers web-based payroll services at www.paymaxx.com. Bigwords, another e3000 site, buys and sells textbooks at www.bigwords.com, and e3000 site Sunrider sells health products at www.sunrider.com. According to The 3000 News Wire, "Wired magazine recently named Wake Forest University as the most wired campus in the US, and SRN's Web-based 3000 solution is at the heart of the Wake Forest operations." And Information Week reports that eCandy.com plans to use the e3000 and the MACS order processing system (and our Suprtool) confident they can process up to 300,000 transactions a day. With RSA working on SSL security for Apache/iX and with MPE/iX 6.5 upgrading to Java 2 (actually version 1.2.2) plus JDBC and LDAP client capability, the e3000 is a platform you can apply in a number of interesting ways. If you are just starting out with web-enabling, activate the Apache web server on your MPE/iX system and write some code to enable bi-directional browser access to all your internal users. Everything you need to know to get started is on HP's "Jazz" web site. As your experience and needs grow, add a standalone NT, HP-UX or LINUX web server and give your external customers, suppliers and colleagues access to your MPE/iX databases through ODBC. Using Qedit for Windows as a development front-end, you can even use the Internet to easily maintain your e3000 web site from halfway across the globe. At Robelle we use web pages and Qedit to do project management for all our current projects. And with the powerful new scripting language and host-command feature to automate Internet tasks, perhaps we should rename it the "eQedit"? Links: 3000 News Wire on e3000: http://www.3000newswire.com/subscribers/e-3000announce-0002.html Information Week on e3000: http://www.informationweek.com/773/hp.htm Jazz, the Latest Internet Technology for e3000: http://jazz.external.hp.com/ About PayMaxx: http://www.businessservers.hp.com/solutions/internet/CSY000FP6.html [Bob Green] Tired of the Command Interpreter? Drop It! ========================================== In the last issue, Neil Armstrong introduced MPE/iX 6.5. This is the first in a series of articles describing some of the new features in MPE/iX 6.5. [Ed.] The first new feature that I find interesting is the NEWCI command, which is known as CI elimination. The NEWCI command is similar to the Run command in that it executes a program as a child process. However after launching the program, the NEWCI command will eliminate the CI process for that session. This will help reduce the number of processes on heavily loaded high-end systems. This new feature allows for users to only have their main application running, without having a CI running. From your logon UDC for an individual who runs a customer application, you could start the applications with the NEWCI command, and when they leave the application they are logged off automatically. Dologon option logon nobreak file custdb=custdb.db.data newci customer.pub.xeq ****** Naturally, I was curious to see if I could use Qedit in this manner. Because I live in Qedit all day, I rarely, if ever, require command prompt access. :newci qedit.pub.robelle Qedit/iX. Copyright Robelle Consulting Ltd. 1977-1999. (Version 4.8) /showtime FRI, JAN 28, 2000, 11:31 AM /exit CPU=5. Connect=1. FRI, JAN 28, 2000, 11:31 AM. As you can see, once you exit the program that was executed with the NEWCI command, you are logged off automatically. Overall the NEWCI command seems like a good solution for eliminating a large number of processes for those users who only need application access. [Neil Armstrong] Upcoming Events In 2000 ======================= What: McKessonHBOC Meeting When: May 2-5 Where: Las Vegas, Nevada Who: Nicky Gunther, Neil Armstrong What: Summit Information Systems Client Group Conference When: May 21-22 Where: Maui, Hawaii Who: Mike Shumko What: Smith Gardner World Conference & Expo When: June 4-7 Where: Aventura, Florida Who: David Greer, Marie Reimer, Mike Shumko What: HP World 2000 Conference & Expo When: September 9-14 Where: Philadelphia, Pennsylvania Who: Bob Green, David Greer, Francois Desrochers, Nicky Gunther, Hans Hendriks, Marie Reimer, Tammy Roscoe Inventory Reduction Sale ======================== We're in the process of releasing Suprtool 4.3, and we have some excess inventory of Suprtool 4.2 user manuals. These are the same high-quality manuals you always receive from us, just without the newest features. Suprtool is backward compatible, so the old manuals are still quite usable. If you would like to distribute manuals to more people around your company, we are clearing out the old stock at US $10 each (or if you prefer manuals of the new release, they are $20 each). To order, call Eunice Sheehan at 1-888-ROBELLE or email Eunice at eunice.sheehan@robelle.com New Web Site for Robelle Distributor in Australia ================================================= Robelle's Australian Distributor, Michael Redmond of MRFM, is pleased to announce his new website: http://www.mrfm.com.au/ Michael has worked closely with Robelle for many years. You may remember reading his article in the September 1999 What's Up, DOCumentation? called "An Australian Revisits Robelle". Michael was one of the privileged visitors to the Robelle office when it was "on the farm" with dogs, cats, horses, and not much space! Go check out the MRFM website for more information on its products and services. Speed Demon Saves Hours in Only Fifteen Minutes =============================================== If you could double the speed of some of your COBOL programs in only a few minutes, wouldn't you do it? Speed Demon is a little-known part of Suprtool that has been around for years, but hasn't received the attention it deserves. If you have Suprtool, then you have Speed Demon - it's one of the standard components of Suprtool that everybody gets at no extra charge. Speed Demon is a replacement routine for DBGET Mode 2. If you have a program that reads an IMAGE dataset serially, chances are that you can speed it up substantially using Speed Demon. The program logic remains the same; you just change the DBGET call to a Speed Demon call. That might sound like a bit of an oversimplification, but there's really not much more to it than that. In general your existing program will look something like this: DBOPEN while not end-of-file do DBGET(base,dataset,mode-2,status,itemlist,buffer,dummy) do something with the record endwhile produce the report, etc. DBCLOSE After you've converted it to use Speed Demon, it will look like this: DBOPEN SPDEDBINIT(base,dataset,mode-1,status,control,itemlist) while not end-of-file do SPDEDBSCAN(base,status,buffer,dummy) do something with the record endwhile SPDEDBSHUT(base,dataset,mode,status,dummy) produce the report, etc. DBCLOSE Your program logic and structure remains the same. The serial DBGET is replaced by a call to SPDEDBSCAN. Some of the DBGET parameters are moved to SPDEDBINIT, which is called only once, before the first call to SPDEDBSCAN. With a program that does a serial scan, the DBGET parameters do not change from one DBGET to the next, so it does not make sense for IMAGE to have to validate the parameters for each record. If you serially read a million records, do you really need to specify a million times which dataset and item list you want? With Speed Demon we set the parameters once in the SPDEDBINIT call, moving the checking and overhead outside the read loop. The Speed Demon code that gets executed a million times is as lean as possible. Speed Demon achieves its performance improvement by using the same high-speed database scan engine that is at the core of Suprtool. Instead of reading a record/buffer/page at a time as IMAGE does, Speed Demon reads up to 50Kb with every disc access. That means that Speed Demon may fetch hundreds of records with every disc read operation. Additionally, Speed Demon uses Robelle's pre-fetch mechanism to coax the operating system into fetching the data before Speed Demon actually needs it. This allows the program to always be processing records instead of waiting for I/O to complete. The result is that Speed Demon substantially reduces the I/O overhead of the retrieval. Because I/O is the most common bottleneck on an e3000, anything you can do to reduce the amount of I/O will benefit the program. You will usually find that Speed Demon can read records five times faster than DBGET. Note that your overall program may not run five times faster, because the rest of your processing, sorting and printing of the records will be at the same speed as before. But cutting the overall run time of a program in half is not unusual with Speed Demon. That's a pretty good result from such a small investment in programming effort. See the Speed Demon section of your Suprtool user manual for more information, or call us if you have any questions. [Mike Shumko] Adding A Sequential Number to A Data File ========================================= Recently we've received a number of calls from folks wanting to add a sequential number to an output file in Suprtool. In other words, they'd like the output file to contain a new field containing values 1, 2, 3, etc. for each successive output record. Suprtool doesn't have a built-in function for this. But here are two ways you can achieve this. With Suprtool ------------- Suprtool has a "NUM" output option that will add a four-byte integer field to the start of the output record, containing the record number of the input record. This was originally added so that programmers could scan large files with Suprtool, extract the record numbers of records that required further processing, then pass those record numbers to a 3GL program that could do directed retrievals to process the already-qualified records. When selecting a subset of records from a large file, or from a dataset which has non-empty delete chains, the record numbers represented in the output file will be non-sequential. However, when copying all records from one MPE file to another, the input record numbers will be sequential, starting with record number 0 for the first record. in custs out custnum,num,data xeq IN=19, OUT=19. CPU-Sec=1. Wall-Sec=1. :listf custs@,1 FILENAME CODE ------------LOGICAL RECORD------- SIZE TYP EOF LIMIT CUSTNUM 15W FB 19 19 CUSTS 13W FB 19 19 Note the new file's record length is 2 words (4 bytes) longer than the original data file. That is because each record now has a four-byte binary record number added to the beginning. Here's what the records look like: input custnum define recno,1,4,integer define data,5,26,byte extract recno, data list standard xeq Jan 10, 2000 14:00 File: CUSTNUM Page 1 RECNO DATA 0 Thomas Serafin 1 Wayne Humphreys 2 Gordon Oxenbury 3 Lana Johnston 4 William Kirk 5 Walley Nisbet 6 Rupert Hillstrom 7 John Melander 8 Werner Frahm ...etc The record numbers start at 0 and go up by 1. With Qedit ---------- When opening files, Qedit has to do some quick footwork to decide whether the file is numbered or not. It does this by examining the first few records, to see if the last 8 columns contain numbers, and whether those numbers ascend from one record to the next. You can override this default on the text command: text foobar,unnumbered This forces Qedit to treat the file as unnumbered. In other words, Qedit will treat the whole record as data, irrespective of whether the first or last columns contain sequential numbers. If we Text the file as unnumbered, we can force Qedit to Keep the file with numbers: text custs,unnumbered set keep num on keep custs2 Note that the records are now 4 words (8 bytes) longer than the original file, because an 8-digit ASCII line number was added to the end of the records: listf custs@,1 FILENAME CODE ------------LOGICAL RECORD------- SIZE TYP EOF LIMIT CUSTS 13W FB 19 19 CUSTS2 17W FB 19 19 Use Qedit to examine the file: list custs2,unnumbered {treat the line numbers as data} 1 Thomas Serafin 00001000 2 Wayne Humphreys 00002000 3 Gordon Oxenbury 00003000 4 Lana Johnston 00004000 5 William Kirk 00005000 6 Walley Nisbet 00006000 7 Rupert Hillstrom 00007000 8 John Melander 00008000 9 Werner Frahm 00009000 ...etc The line numbers are now included in the file, and can be defined as a data field in subsequent Suprtool tasks. Note that the numbers start at 1000, and go up by 1000. This is because Qedit assumes that line numbers have three decimal places. To make the numbers start at 1 and go up by 1, use this command before the Keep command: renum .001 .001 [Hans Hendriks] Using Regular Expression to Create HTML Headings ================================================ When you have to manually convert a text file into HTML, one of the tedious typing chores is the addition of