Spool-Explorer IV Available for Download

We are pleased to announce that the much-awaited next release of Spool-Explorer, version IV is now available for download. This release features a much-improved UI, with graduated backgrounds, modernized splash screens, and improved configuration screens. In addition to this general overhaul of the entire UI, there are a number of other useful features:
  • An improved spool file listing allows grouping the first column into folders.
  • The date and time fields are combined (for easier sorting) in the spool file list.
  • Additional PDF functionality including compression and encryption, overlays and additional page sizes and fonts.
  • Support for *RICH format downloads and Rich Format Tags.
  • Integration with Nexus Web Object Warehouse (WOW), including search values extracted from the report text.
  • Improved User Security (UI and functionality).
  • Support for appending files to existing zip files.
  • Cancel capability for many operations (for multiple downloads etc).
  • Many other UI tweaks based on customer input.
If you are current Spool-Explorer customer, please visit our web page to download the latest version of the product and documentation. If you have any questions about your maintenance status, please contact BCD; if you have any questions about any of the new features, or about installing the upgrade, please get in touch with Tech Support.





Catapult 5.60 Now Available for Download

A major new Catapult update has been made available for download from our web site. This update includes over a dozen important new features (many of these in response to specific customer requests), as well as solutions to a few reported problems. For a complete list of the new features included in Version 5.60, please visit the Catapult Home Page.

Over the next few months, we will be profiling a number of the new features in the Technical Update. Below is a quick overview of a couple of them:

Data Extraction Replacement Values (&X0 - &X9)
With Catapult 5.60 you can now extract Data Values directly from your reports, which you can use as variables within your grab rule definition. These values are parsed out of the report text, and assigned to the replacement values &X0 through &X9. The &X replacement values can then be used in any field in your GrabRule that supports replacement values. For example, the &X values can be used to create the path to save to, customize the email address, etc.

Here is an illustration of the new interface (click on the image to see a full-sized illustration):



Once you have defined up to ten Data Extraction entries, the associated replacement values can be used elsewhere in your GrabRule.

The screen shot above demonstrates three Data Extraction search values that will be parsed out of each report (or Split section in the case of Parse/Split). &X0 will contain the Account Number extracted from the report. &X1 will contain the State, and &X2 will contain the order description; all of these values are extracted from the report.

The algorithm is optimized to exit once a value has been extracted for each of the searches.

Here is an illustration of how you can use the extracted values:



In the Server Path field above, the documents will be placed into appropriate directories by account number.

If you have any questions on how this works, please email tech support.


BCD @ Spring COMMON

This year's spring COMMON conference is taking place in Chicago, Illinois (home of BCD!). As befits the 'local' team (BCD's headquarters are in Hinsdale, in the greater Chicago area), we'll have a strong presence at both the trade show and sessions, so if you are going to attend this spring, please plan on dropping by to pay us a visit.

At the Expo, you'll find us at booth 417. We'll have several senior sales reps and developers available to discuss and demo all the latest software features of the new and updated versions of WebSmart, Catapult, Spool-Explorer and Nexus, as well as deliver ad-hoc presentations on any of our products. Don't miss this opportunity to corner the development manager and extract a promise for that much-needed feature! Or at the very least, you'll want to enter your name for the cash drawing....
 


Cleaning up Temporary Objects with Smurfs

Sometimes in an application you need to create temporary objects (user spaces, temporary files, etc.). But one of the problems with creating these objects is the clean up afterwards.

A technique that one of our programmers came up with to address this problem is to attach a trigger program to the smurf header, and then you can have the temporary objects cleaned up at the same time as the smurf is deleted.

This is how you would do it:
  1. In your WebSmart app, create a temporary file name.
  2. Store it in a smurf with a special name, such as:
    setsmurf("SPLFTEMPNM", filename);
  3. In the trigger program, upon a delete of PW_SESSF, read PW_SVARF looking for the key value of "SPLFTEMPNM"
    (matching on the smurf ID, too, of course). Get the value for filename, then call a quick CL program to delete the file!
If you have any questions on how this works, please email tech support.

Kevin Cronin (last spring's recipient of the "Best Traditional Lab" award from the COMMON User Group) will also be leading two sessions, entitled "Web Portal Strategy - Deploying Browser Applications", and "Web Development with ProGen WebSmart".

We hope to see you there!


Upcoming WebSmart 5 Training Seminars

The first WebSmart 5 Public Training class has been scheduled for the the week of April 11, 2005. At this class we'll be taking a particularly close look at all the new features (see the list in November's Tech Update) included in this release. If you are just getting going with WebSmart, or even if you're a veteran WebSmart programmer wanting to familizarize yourself with the powerful new tools in this version, this seminar is the one you won't want to miss.

We are also putting together a two-part course to run the week of April 18, 2005. This course will include the basic WebSmart 5 training plus an advanced section. The seminar will devote 2 days to working with the new WebSmart 5 features and another 2 days on advanced programming techniques.

If you are interested in attending either of these classes, or would like additional information, please fill out our Training Request form. You can also contact Marcel Sarrasin, our training coordinator.


WebSmart 5 Highlights: Support for Compiling an Object as a Module

With the arrival of WebSmart 5 another feature you'll be able to take advantage of is the ability to compile a program as an ILE module.

Some WebSmart programmers already make use of the option to compile a WebSmart definition as a non-cgi program in order to make their development more modular. The non-cgi programs are then reused by invoking the 'call' function in the PML where needed.

However, this approach requires that all the related programs share the same WAS version. This requirement is sometimes overlooked and occasionally results in confusion when subsequent changes are made to the application. With version 5 you can compile your definition as a module and bind it directly into other programs. This makes the modularity easier to manage, and has the added bonus of improving performance.

In order to reference a module that you've created, all you will need to do is simply call it with the 'callb' function (WebSmart will take care of automatically adjusting your binding directory for you). Your end result will be a faster application, with fewer objects to manage, and no more worries about keeping a consistent WAS version.

If you have any questions about this feature, contact Technical Support.


New WebSmart 5 PML Language Features

There are many new powerful language features in PML for WebSmart 5 that can make you more productive in your coding. This article shows a few simple examples, with 'before 5.0' and 'after 5.0' comparisons, taken from a real-life coding project.

String Manipulation
Building strings is easier in WebSmart 5. For example, if you wanted to build a custom link to a page that comprises the program name and two parameters, prior to WebSmart 5, you might do the following (I've omitted creating fields common to both examples):

// We want to include tab index on our link (parm name tabidx). It's a numeric field.
// We also want a task of "newtab".


crtfld(tabidxa, 10, A, 0, "alpha tab index");
mylink = append(pgmf_qpgmnam, "?tabidx=");
tabidxa = numtoalpha(tabidx);
mylink = append(mylink, tabidxa);
mylink = append(mylink, "&task=newtab");

In WebSmart 5, you can write this:

// We want to include tab index on our link (parm name tabidx). It's a numeric field.
// We also want a task of "newtab".


mylink = trim(pgmf_qpgmnam) + "?tabidx=" + numtoalpha(tabidx) + "&task=newtab";


Simplified Conditional Statements
Before WebSmart 5, you had to enclose every IF and ELSE clause in curly brackets. The following code sets a CSS class for tabs on a page. It determines which tab is the active one by getting the 'active tab number' parameter from the url.

ctabidx = getparm("ctabidx");
if (ctabidx == 0)
{

  ctabidx =1;
}

x = 1;
while (x <= 5)
{
   if (x = ctabidx)
   {

     tabsts ="atab"; // class for active tab
   }

   else
   {

     tabsts = "itab";
   }

   tabtext = atabs[x];
   tablink = atablnk[x];
   wrtseg(tabseg);
   x = x + 1;
}

Here's the same routine written to take advantage of a simplified single-statement 'if'.

ctabidx = getparm("ctabidx");
if (ctabidx == 0)
   ctabidx = 1;
x = 1;
while(x <= 5)
{

   if (x =ctabidx)
     tabsts = "atab"; // class for active tab
   else
     tabsts = "itab";
   tabtext = atabs[x];
   tablink = atablnk[x];
   wrtseg(tabseg);
   x++;
}


Note: Did you also notice the use of x++ instead of x = x + 1; ? This is another convenient shorthand in WebSmart 5.

Simplified Mutually Exclusive Conditionals
In WebSmart 5, you can also indent IF's and ELSE's for mutually exclusive conditions, without having to include curly brackets, like this:

if (ctabidx = 1) tabname = "File";
else if (ctabidx = 2) tabname = "Edit";
else if (ctabidx = 3) tabname = "Tools";
else if (ctabidx = 4) tabname = "Options";
else if (ctabidx = 5) tabname = "Help";


Or, you can use a conditional construct that will be more familiar to RPG programmers (and one that is rather unique to RPG and PML !):

select
{

   when(ctabidx = 1) tabname = "File";
   when(ctabidx = 2) tabname = "Edit";
   when(ctabidx = 3) tabname = "Tools";
   when(ctabidx = 4) tabname = "Options";
   when(ctabidx = 5) tabname = "Help";
}


You are better off using this latter technique in cases where multiple statements need to be conditioned to execute mutually exclusively.

Summary
These are just a few of the many language improvements to PML in Version 5. The Upgrader's Guide has a comprehensive list of language enhancements, including new PML functions. If you'd like a beta copy of WebSmart 5, please email Technical Support.


New WebSmart Example Program: JavaScript Graphing Example.

WebSmart example programs published this month:
  • Example 83 - This example (sample screen shown at right) illustrates an exciting technique that allows you to create graphs on the fly using JavaScript. The information shown here has been grabbed from database files using an SQL query, and the graph created dynamically using a JavaScript package. Click on the image to see the program in action.

    This graph is created via a separately licensed program. Licensing information is available at the links above.

  • Example 84 - Example 84, also new this month, shows you how you can use JavaScript within a WebSmart program to add a print button and how to print an alternate static document stored on your IFS.
  • Example 85 - Example 85 demonstrates how to add a second file to your SQL applications. This program definition shows how to create a join table with records combining fields from two files, in this case linked by customer number. In this way, the order summary can include fields from both files, such as the customer's name instead of just a number. Using this technique, you can not only join the files, but also sort on fields from the second file. This example, like all the previous ones, includes step by step instructions on how to set it up.
For further details on any of the WebSmart examples, or if you have any questions on how to implement the techniques they demonstrate, lease contact Technical Support.







Murray City Consulting Profile

Murray City, Utah (population approx. 50,000) is adjacent to Salt Lake City. The Murray City web site has recently been redesigned and revamped providing improved information access and on-line applications. The On-Line Utility system was one of the applications that Murray City wanted to move directly onto the iSeries platform.

This is an example of a consumption graph generated for the application.
This provides real time access to data and eliminates using another web application server and the associated costs for hardware, software, and programming. Hosting this application on the iSeries also means that the Murray City IS group can maintain the programs using the WebSmart IDE.

David Larsen, Director of Information Systems, and Roy Wall, Senior Programmer, evaluated and selected WebSmart from BCD and subsequently contracted the services of the BCD consulting group to assist with their initial project.

WebSmart Project
The new site includes secure login and payment processing. This allows Murray City residents to access their utility account(s), view current charges and account details and make on-line payments via credit card. Credit card payments are processed real time using a secure connection to VeriSign's payment processing. If an individual is responsible for multiple accounts, they can view and apply payments to each account using a single login.

Account details include access to view payment, consumption, billing and service history. The data displayed allows the user to sort by column and drill down to view details. Users also have access to generate on-line graphs of their power, sewer and water consumption providing current period and year over year comparisons by month.

This is an illustration of a printable billing statement.
Graphs can also be generated to show summaries for each type of service. If a user wants to view or print a copy of their bill they can generate a page that looks identical to the billing statement sent via mail.

David Larsen, IS Director at Murray City, expressed the following: "ExcelSystems and BCD have been excellent to work with. This has been one of the most satisfying experiences with a development project I have ever encountered. The staff and management were very professional and competent. They accommodated our installation and community needs. Everything works the way it was planned. ExcelSystems went out of their way to work with changes Murray City requested late in the project. We are now planning other applications using WebSmart and ExcelSystems. I would highly recommend ExcelSystems and BCD's WebSmart IDE."

For further information about how this application was developed, to view screen shots of the application, or for details on our consulting services, please vist the Murray City Consulting Profile at our web site, or contact Kevin Cronin.


 Summary List of Recent Updates

ProGen Plus 8.02
  • PG8R021 - 2005/02/01 - Requires OS/400 V5R1 or later. Addresses an issue with *DATCVT work fields where the attributes were changed in error.
  • PG8R020 - 2005/02/01 - Requires OS/400 V5R1 or later. Addresses an issue that was producing an error when changing the conversion type on a *DATCVT workfield.
  • PG8R019 - 2005/01/27 - Requires OS/400 V5R1 or later. Fix problem with deleting Externally Described Data Structures. Addressed an issue where field extended attributes were lost when panel was copied.
Please visit the ProGen Plus Updates page for further information on the available updates.

Catapult 5.60

Catapult 5.60 is now available for download from our web site. Version 5.60 (Poller: 5.60 Build 2091; Console: 5.60 Build 1786) contains all the latest fixes, as well as a few new features.

Below is a summary list of the changes in this release. A complete list is posted at the Catapult Updates page.

  • Catapult now supports extracting up to 10 additional data values from the report data to use as replacement values for filenames, addresses etc.
  • Call-out program functionality has been added to allow end users to create programs that will query in-house databases to return values to Catapult.
  • Additional values can now be attached to Group Entries. This will allow user specific values to be stored with the group (for example: PDF password). Use
  • CSS Style sheets are now supported for HTML generation.
  • Catapult Poller can now dividelarge files downloaded in *RICH and *RPT format into smaller sections. The Poller will carve up large files after the Split/Parse process, before the file is formatted into PDF/RTF/HTML.
  • PDF passwords now support replacement values.
  • Zip passwords now support replacement values.
  • Catapult Poller can now send separate emails for 'Grouped' addresses. So, rather than sending out one email with bob@here.com;joe@there.com;bill@elsewhere.com, Catapult will send out three separate emails. This will help to keep email addresses private.
  • Support for optionally open favourite windows when Catapult starts (History List, Request and Errors List, Poller Status).
  • Exodus now Blowfish encrypts the iSeries password passed between the client and the server on startup.
  • New 'Where Used' screen to show which GrabRules use any particular Group.
  • Catapult 5.5 and higher install into a new directory and create a new Program Group in the Windows Start Menu (rather reusing the the existing Catapult entries). This will allow multiple versions of Catapult to be installed on one machine.
  • Validates that the 'General' folder is not modified or deleted.
  • Validates the Page Selection range.
  • Resolved crashing problem in the Console when there is a default printer assigned to Windows, but the printer is invalid.


© 2005 ExcelSystems Software Development, Inc.
ProGen Plus and ProGen WebSmart are Trademarks in the US and Canada.