From:
To: Users of Robelle Software
Re: News of the HP 3000 and of HP-UX, 1999 #3
We look forward to seeing you in San Francisco this year at the HP World ’99 Conference and Expo, which will be held at the Moscone Center on August 15 - 20.
Once again, Robelle will be conducting short training sessions in our booth (#1815), immediately on the right as you enter the main exhibit hall. Each session will last approximately 15 minutes, followed by plenty of opportunity to ask the presenter questions.
Attendees of our in-booth training sessions will receive a free T-shirt. For a schedule of topics and times, see the enclosed information sheet or visit the Robelle@HPWorld ’99 Web page (http://www.robelle.com/hpworld/1999/).
When you stop by the Robelle booth, make sure you get a ticket for our prize draw on Wednesday, August 18th at 1:30 p.m. We have three great prizes to give away:
First prize is the Dragon Naturally Speaking Mobile software, featuring continuous speech recognition;
Second prize is a Canon Laser Scanner (FB 620P) featuring high quality scanning and simple set up; and
Third prize is Print Master Platinum software, which includes over 150,000 images and 25,000 photos.
[Marie Reimer]
Robelle is pleased to announce that our Qedit for Windows client/server editor is now integrated with Bradmark Technologies’ MPE Command Center. The combination of MPE Command Center and Qedit for Windows provides MPE users with a complete Windows-based solution to handle everything from system administration and file system management to text and data file editing and source code development. No longer do HP 3000 IT staff need to learn the intricacies of the MPE environment—MPE Command Center and Qedit for Windows bring an unprecedented ease-of-use to HP 3000 administration and programming.
Robelle and Bradmark have agreed to a joint demo distribution program, whereby both companies will provide each other’s software on their demos. The two client/server products are highly compatible for those customers seeking a Windows-based solution for administrative and programming work on the HP 3000. Commencing mid-August, Qedit for Windows will be the default editor for MPE Command Center demos. Likewise, all Qedit for Windows MPE demos will include Bradmark’s Command Center, giving demo users the option to look at both products.
If you’re attending HP World this year, you can view both Qedit for Windows and MPE Command Center at the Robelle booth (#1815). Similarly, Bradmark will be demonstrating the integration of the two products at booth #1401.
About MPE Command Center:
MPE Command Center is comprised of the MPE Command Console and the WinMPE command interface. The Command Console allows IS Administrators to monitor all their systems enterprise-wide from a single Windows NT server or workstation, either locally or remotely. The WinMPE command interface provides a Windows GUI for managing accounts, groups, users, and files via drag-and-drop functionality. More details at http://www.bradmark.com/mpecc2.htm.
About Qedit for Windows:
Qedit for Windows is Robelle’s client/server editor, which edits host HP 3000 and HP-UX files as well as PC and PC network files from a Windows-based GUI. Qedit for Windows is highly scaleable in its ability to handle both small and very large files and in its performance across both local office networks and remote connections. For more information, see http://www.robelle.com/products/qwin/.
[Nicky Gunther]
The next Suprtool training class will be held on September 9 - 10 in Albany, Oregon at the offices of Lund Performance Solutions. The instructor will be Mike Shumko.
This two-day class is $800 per person. To sign up, contact Robelle at 1-888-762-3553 or send e-mail to training@robelle.com.
Robelle has recently certified a second Suprtool trainer. Jeff Kubler specializes in performance consulting and capacity planning for HP 3000 and HP 9000 sites. He can be contacted at Kubler Consulting (541) 745-7457.
For more information about Suprtool training, visit
We recently purchased a new HP 9000 server. Designed for ISP and enterprise applications, it is an A180 with a "pizza box" format that can stack up to 20 servers on a single rack. As it is unlikely that sites would want to maintain a set of 20 consoles, the machine comes equipped for both a serial and a "Web Console."
At the back of the CPU, there is an external SCSI port, a serial console port, and two network ports (one 10/100 for general network traffic, the other with a pre-set IP number for Web console duties). After ensuring that the IP number doesn’t conflict with other devices on a network, the network cable is plugged in, and the port can be accessed by typing its IP number on the URL line of any Java-enabled Web browser. This fires up a set of configuration screens that accept a new IP number, permitted users/passwords, as well as datacomm and network configurations (such as server and console names). Thereafter, typing the console’s name in the URL line of a browser brings up a login screen (assuming the name and IP address has been added to the DNS configuration).
After supplying a login name and password, a new page allows the selection of "Access Console," which invokes a Java script that creates a terminal emulator window:
Selecting In/Out "detaches" the terminal part of the window, so that it can be maximized for legibility. Using password encryption, the remote Web server allows up to four (4) operators in different locations to manage a server via any Java-enabled Web browser. It also allows remote restarting of a server that is down. It works remarkably well, although the terminal functions use different key combinations that may take a bit of getting used to (Ins Line = CTRL-F1, Enter=F12, etc.).
This is a nice feature, which I expect to see in more HP servers in the future.
[Hans Hendriks]
Since HP dropped support for HP-UX 9.x, we have put in motion a project to move our primary R&D to a new system running HP-UX 10.20. This gives us later versions of HP-UX development tools to work with, as well as Y2K compliance. However, it also means future versions of Qedit and Suprtool for HP-UX will be compiled with the HP-UX 10.20 libraries. As a result, future versions of our products will no longer be compatible with HP-UX 9.x, 10.01 and 10.10.
After conducting an informal poll of our customers and distributors, we found that this should affect only very few of our users.
Although we will retain binary copies of the current versions of our software for older versions of HP-UX (for those customers who may need to run the software on older systems), these versions of our products will no longer be enhanced.
[Hans Hendriks]
One of the gotcha’s that I ran into during our Y2K conversions involved the !HPYEAR variable. This variable, which currently holds the numeric value 99, is used in a number of command files that build up a date field. For example,
setvar upddd "!hpdate" if !hpdate < 10 then setvar upddd "0" + str("!hpdate",1,1) endif setvar updmm "!hpmonth" if !hpmonth < 10 then setvar updmm "0" + str("!hpmonth",1,1) endif setvar upddate "!hpyear" + "!updmm" + "!upddd"
This example generates a 6-digit date variable called Upddate (e.g., 990715). Next year, however, when the !HPYEAR variable holds the numeric value 0, all occurrences of the above code will generate a 5-digit date (e.g., 00715).
We already pad day and month values of less than 10 so that they have a 2-digit format. But we had a number of command files that did not pad the year. For those situations, an alternative solution would be to replace the HPYEAR variable with the HPYYYY variable, which resolves to a 4-digit year (e.g., 1999 or 2000).
[Robyn Rennie]
As most programmers know, the two main problems with dates that have 2-digit years can be summarized as follows:
>if history-date <= "010101"
will not find any dates from the 1900s, such as 991231, 631122 or 411207.
before sort after sort by date
Record 1 980704 Record 3 000101 Record 2 991231 Record 4 031031 Record 3 000101 Record 1 980704 Record 4 031031 Record 2 991231
Both problems can be solved by using the new $stddate function that comes with Suprtool version 4.2.
If you still have dates with 2-digit years, please check out our extensive Web pages at http://www.robelle.com/year2000.
[Paul Gobes]
We have been working for some months on a strategy for helping our customers through the much-anticipated Y2K period. One aspect of our Y2K planning has been to determine the staffing levels that we will need around year-end.
We expect an increase in call volume in the first week of December when people encounter the "+30 day" processing, as well as the last week of December with "+7" days. After a busy first week or two in January, we expect it will start to slow down. Robelle Technical support people will be working extra shifts for full 24-hours-per-day and 7 days-per-week coverage, as required. Additional people will also be on call during these peak days.
Knowing that you will already have a lot of things to think about at year-end, we just want to assure you that Robelle will be here to help you if you need us.
[Kerry Lathwell]
More and more useful Internet tools are now being bundled with MPE/iX. One such tool is Java, the popular programming language that is increasingly being used in production environments. With MPE/iX 6.0, Java can now be installed with one additional step in the installation process. See the Java/iX Installation Instructions in the MPE/iX 6.0 Release 6.0 System Software Maintenance Manual for details.
Writing Your First Java Program
If you have installed Java, you might want to try writing a sample program. The following example shows you how to write a "Hello World!" program in Java. First, type these lines into your favorite text editor:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
Note that capitalization in Java is significant, so everything must be spelled exactly as shown above. In Java, there are close associations between file names and the class names used in the source code. Save your program as the file name:
HelloWorld.Java
You can compile and run your Java programs from the CI prompt. But because Java is case-sensitive, including file names, we suggest that you compile and run your program from the POSIX shell. To compile this class from the shell, enter
javac HelloWorld.Java
After a successful compilation, the class HelloWorld is created in the file:
HelloWorld.class
To run this sample program, enter
Java HelloWorld
and it should print
Hello World!
Note that we did not include ".class" in the name of the class that we specified to Java. In fact, if "HelloWorld.class" had been specified, it would have resulted in the error "Can’t find class HelloWorld.class."
More about Java
It is exciting to see such a modern programming language as Java become available as part of MPE/iX. For more information about Java on the HP 3000, visit http://jazz.external.hp.com/src/java/index.html.
[David Greer]
You may not want to connect your HP 3000 to the whole Internet, but there are many good reasons for starting a Web server and allowing your users to access local company information through a Web browser on their desktop PCs.
Here at Robelle we use our intranet for both administrative and project management purposes.
Our internal Web site offers access to numerous resources: R&D and MIS projects, meeting agendas, weekly status reports, internal procedures manuals, service rosters, company artwork library, style guides, PC COE configurations, FAQs on commonly used software, department statistics and activity notes, reports of interesting business trips, etc.
Managing projects was the reason why the WWW was first invented by CERN in Switzerland. It lets various members of a team see and update a project, which is especially useful if your team is as spread out as ours (we have project members in Vancouver, Surrey, Alberta, Montreal, Anguilla and the United States). It’s a great way to collect design notes, modifications, schedules, checklists and have all the members update the status of a project.
Installing a Web server on your HP 3000 is easier than you may think. It took me less than 30 minutes to get the Apache server up and running on one of our HP 3000s.
The following steps describe the general process:
That’s it!
You can get more detailed instructions at the Jazz Web page:
Your server Web pages will be stored in the POSIX namespace. But don’t worry—both Qedit and Suprtool can easily handle these files.
[Paul Gobes]
The following question came to us from the support mailbox:
I have a QEDIT file that is displaying a "?" at the beginning of some lines. I understand that this indicates that the line contains nonprintable characters. How can I get QEDIT to display the data so that I can determine what the data is?
The best way to display the data is by using QZMODIFY as follows:
The Visual screen with an unknown character in the line will resemble the following:
===> Start of file 1 QED21739.PAUL.ACCOUNT "Z"(U) Hint: Type ?f7 for Help *?sadlkfjslkdj.flkfjkl ^ unknown character // ....+....1....+....2....+....3....+....4....+....5....+....6....+....
Press F8 to exit Visual mode.
/set mod qz Qzmodify: use Control-Q in the Modify Command for Help.
/m1
Qedit will display the line, but the cursor will not be underneath the line, it will be on the line.
Press the spacebar until the cursor is directly on top of the line with the mystery period, then press Control-W followed by a question mark (?).
1 sadlkfjslkdj.flkfjkl
Qedit will then display the data:
ASCII character code = #25 , %000031, $0019
In this case, the character was a decimal 25 = octal 31 = hex 19. Press the Return key to get out of modify mode.
1 sadlkfjslkdj.flkfjkl /
If you need to change this character, then use Set Decimal On and single quotation marks to isolate the decimal 25. For example,
/set dec on /c '25 "#" 1 1 sadlkfjslkdj#flkfjkl 1 line changed /
[Paul Gobes]
Suprtool 4.2.50, available now as a pre-release, has a new $days function that converts any valid date to a number. At first glance this might not seem useful, but this function addresses a number of enhancement requests from users that want to select records based on the number of days between two dates. The canonical case would involve selecting records in which one date is within (or not within) n days of another date.
get order-dataset item order-date,date,mmddyy item deliv-date,date,mmddyy if $days(deliv-date) - $days(order-date) > 7 ...
The $days function converts each date to a number. If a date is not 100% valid, then the number generated by $days will be zero. In the example above, what is the deliv-date when the item has not yet been delivered? It’s probably blank or zero, or has a special flag value, none of which are valid date values. The resulting calculation would be "zero minus $days(order-date)," which would yield a large negative number that would not qualify for selection. On the other hand, if records have a valid deliv-date but an invalid order-date, they would be selected. It’s up to you to build the logic that will account for all cases. Hint: You can use the $invalid function to look for invalid dates. For example,
If not $invalid(deliv-date) and not $invalid(order-date) and & $days(deliv-date) - $days(order-date) > 7
get order-dataset item order-date,date,mmddyy item deliv-date,date,mmddyy define difference,1,8,display extract difference=$days(delivdate)-$days(order-date) ...
The difference field will have the number of days between the order-date and the deliv-date. Where the two dates are the same, the difference will be zero. If there are any cases in which the deliv-date is before the order-date (possibly the result of a data entry error), the difference will be a negative number of days.
The $days function operates on fields in the input record. Therefore, to get the "age" of a record (defined as the difference between today’s date and a date stored in the record), you need to get today’s date into the record. As the following example demonstrates, this is easily accomplished in two passes:
Pass #1: Adds today’s date to the order records
get order-dataset item order-date,date,mmddyy define todays-date,1,8,display item todays-date,date,ccyymmdd extract order-date extract todays-date = $today extract other fields as needed output foo,temp,link xeq
Pass #2: Extracts the "age" of the orders
input foo define age,1,8,display extract age = $days(todays-date) - $days(order-date) ...
This pre-release of Suprtool, version 4.2.50, is the first enhancement release since the 4.2 push distribution earlier this year. Customers with support can get a pre-release by contacting Robelle or their distributor.
Information on current and upcoming releases of Suprtool can be found on the Web at http://www.robelle.com/products/whatsnew.html#suprtool.
[Mike Shumko]
For many years you have had the ability to select records based on today’s date. For example, to select all orders within the last thirty days:
get order-dataset item order-date,date,yymmdd if order-date > $today(-30) ...
If the format of the date field is non-collating, (i.e., it does not lend itself naturally to greater-than and less-than comparisons, such as dates that start with day or month), then you can use the $stddate function introduced in Suprtool 4.2:
get order-dataset item order-date,date,mmddyy if $stddate(order-date) > $today(-30) ...
[Mike Shumko]