From:
To: Users of Robelle Software
Re: News of the HP e3000 and of HP-UX, 2000 #2
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.
[Nicky Gunther]
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]
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]
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.
Some of you may already have seen Robelle's Think Tank offer in the HP 3000 e-Tools Coupon Book compiled by Hewlett-Packard. The coupon book has offerings from a number of HP partners in three areas: web development, web infrastructure, and web deployment.
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?
[Nicky Gunther]
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:
[Bob Green]
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]
What | When | Where | Who |
---|---|---|---|
McKessonHBOC Meeting | May 2-5 | Las Vegas, Nevada | Nicky Gunther, Neil Armstrong |
Summit Information Systems Client Group Conference | May 21-22 | Maui, Hawaii | Mike Shumko |
Smith Gardner World Conference & Expo | June 4-7 | Aventura, Florida | David Greer, Marie Reimer, Mike Shumko |
HP World 2000 Conference & Expo | September 9-14 | Philadelphia, Pennsylvania | Bob Green, David Greer, Francois Desrochers, Nicky Gunther, Hans Hendriks, Marie Reimer, Tammy Roscoe |
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 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]
Suprtool doesn't have a built-in function for this. But here are two ways you can achieve this.
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.
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]
Step 1: put "`1" "`2" etc in front of the line that will be a heading, using `1 for heading level 1, `2 for heading level 2, etc. Instead of a "`", you can also use any character that does not occur this way in the file.
`1Regular Expression Uses `2Assist in HTML creation text `2Find stuff text
Step 2: Do a search and replace using the following regular expressions. Remember to enable regular expressions in your Change dialog or command. Qedit for Windows command:
Search for: | `([1-6])(.*) |
Replace with: | <h\1>\2</h\1> |
Qedit command:
change "`([1-6])(.*)"(regexp) "<h\1>\2</h\1>" all
The text will now look like
<h1>Regular Expression Uses</h1> <h2>Assist in HTML Creation</h2> text <h2>Find stuff</h2> text
What each part of the regular expressions mean:
` | our heading marker |
([1-6]) | remember the next character (if 1..6) as \1 |
(.*) | remember the rest of the line as \2 |
<h\1> | insert the start tag <h1> <h2>... The heading level number comes from the \1 that we remembered |
\2 | the actual heading, with the text remembered in \2 |
</h\1> | insert the end tag </h1> </h2>... |
Exercise for the reader: how would you change all occurrences of first_lastname@mycompany.com to first.lastname@mycompany.com?
Answer in Qedit for Windows:
Search for: | ([A-Za-Z]+)_([A-Za-z]+)(@mycompany\.com) |
Replace with: | \1.\2\3 |
Answer in Qedit:
changeq "([A-Za-z]+)_([A-Za-z]+)(@mycompany\.com)"(regexp) "\1.\2\3" all
[Dave Lo]
It started before 6 a.m. when Bob Green in our Anguilla office was busy working, connected to our Vancouver office, and the line just died. A little after 7 a.m., I called our ISP to report the problem. By 8 a.m. Telephone Company #1 tells me "they're on the ball" but they need to contact Telco #2 in Calgary, because it was originally their line and Telco #1 just acquired Telco #2.
At 9 a.m. Telco #2 says they've checked their lines and the problem is really with Telco #3 and we should call them. I call Telco #3 but they say that I can't initiate a trouble call because the line is owned by our ISP. So it's back to our ISP and by 10 a.m. they have called Telco #3.
Four hours later, a little after 2 p.m., we're finally back up. We later learn that the guy who actually found the blown fuse wasn't notified of the problem until 2 p.m.!
Now if only our Internet had been up, I could have e-mailed him...
The moral of the story is that if you really care about your Internet connection being available 24x7, you need to plan for failure. For fault tolerance, have a backup Internet connection available that you can quickly switch to, even if it is not as fast as your regular line. In our case, if we had had a second connection, even a slower ISDN, xDSL or cable connection, we would not have been so concerned that our primary line was down for eight hours.
[Paul Gobes]
To subscribe, send your request to support@robelle.com.
In alphabetic order: