Included in this JAM/Panther Quarterly Update is information on Panther
5.30 new features (December 2011 release), upgrading applications to Panther
on Linux and using the Panther Reports tool to reuse JPL (JYACC Procedural
Language) code to reduce the amount of time needed to produce reports.
Panther 5.30 New Features
|Release Date: Dec 19th, 2011
Operating System: Panther 5.30 for MS Windows 32-bit, Panther 5.30 for
MS Windows 64-bit
|Release Date: Jan 23rd, 2012
Operating System: Panther 5.30 Standard for Sun Solaris 10 32-bit
Operating System: Panther 5.30 Standard for RedHat Linux 32-bit
|Windows, Motif, Character Mode
||Request ability to display both text and pixmap on tab card tabs (Motif only)
||In the Editor's Open menu, include a list of recently opened items
||Jserver seems to be vulnerable to cross site scripting attacks
||Trace Log Feature, ability to trace events such as JPL execution, database calls. Event information can be written to a trace file as they occur.
||File type is pre-set in the Library Table of Contents window if Save Preferences
on Exit is selected
||JDK 6 Support
||Native 64-bit Windows port (Windows 64-bit)
||Tooltips now appears for toolbox (Linux only)
||Improved link parameters
||Support for all 6 arguments in the installed prototypes functions
||Ability to center sm_message_box dialog in MDI frame/screen (Windows only)
||Increase Max Size of JPL Arrays
||Access to Panther setup variables from smvars files using Property API.
Example @app->java_use, @app->smpath etc.
||Visual Studio 2010 support (Windows only)
||Support for tiff image using PDF Driver (Windows 32-bit only)
||Short Escape sequence support for ODBC is now the default
||Sybase 15 Support
||Support access to Oracle CLOB (character large object) columns
||Support for Operating System Authentication in Oracle
||sm_mw_DismissIntroPixmap(), allows one to close IntroPixmap window
||sm_d_jplpublic and sm_n_jplpublic, load JPL modules from memory
||sm_com_attach(), ability to attach to an active COM object's process
||dm_ora_clob_update(), update a CLOB (character large object)column after
selecting the column
||sm_trace() trace log and dump support
Need a patch? Email email@example.com with your Customer ID, Panther version and platform.
Panther/JAM SCO UNIX to Linux Special Promotion
In recent years, many of our JAM and Panther customers running on SCO UNIX have successfully upgraded their applications to Panther on Linux. We believe there might be other customers that would be interested in migrating to Panther on Linux, but have not done so because they were unsure of what would be required. For a limited time, Prolifics is offering a special incentive to help our customers that would like to migrate their JAM or Panther applications running on SCO to Panther running on Linux.
If you have a current support contract, we'd like to offer you a free license
upgrade. We'll exchange your existing JAM or Panther SCO UNIX licenses
for Panther for Linux licenses at no cost, and we'll even include a high-level
assessment of your application(s) to help you determine the effort required
to migrate from SCO to Linux.
Don't have a current support contract? No problem - we can reinstate your
support and convert your JAM/Panther SCO license to a Panther Linux based
version for FREE, so you can take advantage of this offer.
For more information, please contact firstname.lastname@example.org.
Leveraging Your JPL (JYACC Procedural Language) Code with Panther Reports: A Novel Approach
The Panther/ Web 3 -Tier application that I was assigned to work on, keeps track of the annual rental amounts of a variety of assets that are distributed among several counties and states. This application is about 10 years old and lives on a Solaris10 SPARC server.
My assignment was to perform a nightly update of thousands of records to
the Head Office's main database. The updated data is derived from several
databases across the country, based on the daily input of users from multiple
office locations. A daily log file containing the results of the database
update was also a requirement. The updated data would eventually be used
to generate invoices.
Problems to Solve
Since the annual rental amount on the remote system could change or the users could enter information that would require the amount to be recalculated, a solution was needed to address the following:
- Present to the user the most accurate rental calculation possible.
- Leverage the existing JPL code that performed numerous complex calculations.
- There were thousands of rental information existing in multiple offices; many of the rental amounts in any office could have changed during the course of the day.
- There were numerous databases for the different environments being supported, such as development, training and production. These in turn could connect to different databases.
- The database update required a nightly process that could run in the background due to volume and complexity.
- The nightly process needed to process data requested from one office, a range of offices or all offices.
- A daily report needed to be generated which specified if the nightly process was successful or it failed.
We researched several tools in the market and came to the conclusion that
the Panther Reports would be the best tool for our needs. Here are our
Below are the tasks that were accomplished in order for this new feature to take effect:
- Its strength in performing very complex database queries.
- Ability to run reports as a cron job.
- Ability to leverage existing JPL code.
1. Created a new Panther 3-Tier service that updated the rental amounts.
2. Created a Panther report that would:
- We managed to leverage 2500 lines of JPL code from the existing "Bill_Processing"
service. This service contains very complex calculation code.
- "In" arguments for this service was a range of offices where
the amounts should be updated.
- The service returned a "success" or "failure" result.
- This service ended up having only 30 lines of JPL code.
3. Created a new shell script that would:
- Use a range of offices for which the amounts should be updated.
- Call the new Panther service, passing to it the range of offices' that were received from arguments passed to the Panther Reports program.
- Log success or failure messages to a log file.
- The report ended up having only 100 lines of JPL code.
4. Created a cron job that would:
- Receive as an input parameter the environment being worked on (i.e. development, test, production), which was used to determine the environment variables.
- Invoked the Panther Reports program (rwrun) passing to it the new report
and the range of offices that needed to be updated.
- Include the date and time when the Panther Reports program would be invoked.
To summarize, this project needed to update thousands of records, use the
existing code, run on a nightly basis via cron jobs and produce a report
and log that summarized whether the process was successful or not. Many
alternatives were researched and the Panther Reports was chosen as the
tool to use.
With the Panther Reports as our tool of choice, we were able to accomplish
our task in about two weeks and reuse over 2500 lines of existing JPL code.
In addition, the new Panther Report was fewer than 30 lines of code; the
new Panther service was approximately 100 lines of code, with a good portion
of it performing field validations.
The added benefit that we received by reusing the JPL code was that the application still had one and only one place where the critical information resided i.e. the rental amount is calculated, and any change to the actual calculation in the future will also be automatically reflected in the nightly process.
As we continue on with our project, we look to the Panther Reports to solve problems that not only include the creation of reports, but also to perform jobs that require any overnight batch processes.
Bruce Himschoot is a Senior Consultant at Prolifics. He has over 40 years of experience in the IT field, specializing in the development and migration of multi-tier applications using various technologies including Panther.