Upgrade Guide |
This chapter lists features that are new and changed since JAM 7 for customers upgrading to Panther.
Additional upgrade information is available in the following chapters:
A major development change is that application files are now stored in libraries. Refer to "Libraries, not Files" for more information about this feature.
Installation |
A start-up license is included in all Panther products. This temporary license allows you to start using Panther immediately. The license expires in 45 days, during which time you should have contacted the Prolifics License Desk to receive your permanent license, as arranged by your salesperson. The start-up license does not preclude or eliminate the need to obtain a permanent license.
When a temporary license is in use, a warning message is issued when you start the Panther editor. This warning is issued once a week until the last week, at which point it is issued daily.
Program Startup |
By default, Java is initialized on program startup. You can change this initialization using the new behavior variable JAVA_USE.
Windows clients having an old version of the Java DLLs display an error message, "Java Not Supported". To update the Java DLLs, run the executable in %SMBASE%\jvm
.
Editor |
The New, Open and Save options have the following new options:
The Import Database Objects option is now on the Tools menu.
Edit Menu
SMEDITOR variable).
The Options menu is now a subset of the Tools menu and includes the following new options:
Options Menu
This new menu bar item contains the Import Database Objects that was located on the File menu in previous releases, and gives editor access to the styles editor, menu bar editor, and JIF editor (in JetNet and Oracle Tuxedo). There are also the following new options in Panther:
Tools Menu
directly.
Other editor changes are:
For descriptions of new properties and information about changes in the Properties window, refer to "API Changes."
Access to library members is provided by the Select Library Member dialog box. This dialog is available from the Properties window when properties requiring filenames are selected, and wherever else access to libraries is required. Both local and remote libraries can be accessed.
JPL modules can be created in the editor. Access to the JPL window is provided from the File menu. JPL can be read into the window from a library or from a file on disk. The JPL can be saved to a library or to an external text file on disk. The JPL is automatically compiled when it is saved to a library, eliminating the need to do any file/library manipulation outside of the editor.
The JPL Program Text window, JavaScript window, and VBScript window are no longer modal when writing screen- or report-level JPL procedures or JavaScript/ VBScript functions. This allows you to edit multiple files as well as move freely between script files and the editor workspace. The buttons have also changed for these windows.
Date/time formats have two new Format Type property specifications in the Properties window for assigning date/time formats that display a four-digit year: Alternatively, you can use the behavior variable, DA_CENTBREAK, to set the behavior for applications using two-digit years. The default value of Screen names no longer have a default value is set for the application variable SMFEXTENSION. If you do not explicitly set this variable in a setup file or the environment, Panther no longer adds an extension to names during file searches; and all filenames must be fully qualified; for example, supplied a screen name of The recommended file extension for binary screen files is . A new menu option, OptionsConfigure Toolbars, determines which toolbars are available in the editor.
When constructing screens in the screen wizard, columns defined as being NOT NULL in the database are automatically selected to be part of the screen and are designated with the number symbol (#).
For JetNet and Oracle Tuxedo, refer to "Screen Wizard" for information about changes to the screen wizard in those executables.
There are new properties and functions pertaining to grids which control the amount of space between grid rows and which sort the data appearing in grids. For more information, refer to "New Properties for Grids."
The menu bar editor is now located on the Tools menu in the editor workspace.
For JetNet and Oracle Tuxedo, refer to "Menu Bar Editor" for information about changes to the menu bar editor in those executables.
For Windows applications, toolbars can dock to the MDI frame or float within the MDI frame. A new menu pixmap property, Hot Pixmap, controls the appearance of the item when a mouse moves over an active toolbar item. In addition, pixmaps can be specified for the Inactive Pixmap property.
In previous releases, an Inactive Pixmap was a grayed version of the Active Pixmap in Windows applications. That capability is still there, but you can also specify a separate inactive pixmap. For each toolbar state that you want to indicate in your application–active, inactive and hot–you must supply a pixmap for each toolbar item. The size of the pixmaps for the entire toolbar is taken from the size of the first pixmap.
At runtime, application properties control the appearance and position of the toolbar; refer to "Dockable Toolbar Properties" in Application Development Guide.
The styles editor is now located on the Tools menu in the editor workspace.
For JetNet and Oracle Tuxedo applications, refer to page 1-55, "JIF Editor" for information about the JIF editor, a graphical utility used to create and edit a JIF file that contains information about your application's services.
Other Editor Changes
Properties
Library Member Access
JPL Modules
Non-modal Text Windows
Date/time Formats for Year 2000 Compliance
MON/DATE/YR4 HR:MIN
2 and MON/DATE/YR4
. These are associated with the DEFAULT3
and DEFAULT4
mnemonics, respectively. In addition, DEFAULT3
is set as the default type in the Properties window.
DA_CENTBREAK
is 50. Therefore, if the year setting is equal to or greater than 50, the year is processed as 19xx; if the year is less than 50, the year is processed as 20xx. You can change the setting of DA_CENTBREAK
by setting its value in the smvars
file or at runtime by using sm_option.
Name Extensions
myscreen
, Panther searches only for myscreen
and not myscreen
.ext
also.
scr
. For binary report files, the recommended extension is .rpt
. The file extension for temporary file names has been changed from .jam
to .pro
.
Editor Toolbars
Screen Wizard
Grids
Menu Bar Editor
Docking Toolbars
Styles Editor
JIF Editor
Development and Deployment |
The development executable name has been changed from jamdev
to prodev
. The runtime executable name has been changed from jam
to prorun
.
A single, universal makefile is provided. In prior releases, different pieces of JAM required their own individual makefiles, and it was sometimes necessary to merge the individual makefiles for your specific needs. With the new makefile, you can build either two-tier or three-tier executables:
For more information, refer to the Installation Guide.
To facilitate deployment, all application components (screens, JPL modules, bitmaps, and so on) are now required to reside in libraries. In the screen editor, the components are opened as library members by default, or as repository entries by request. The notion of an independent disk file no longer exists. Refer to Chapter 2, "Using the JAM Upgrade Utility," for information about a utility which groups your disk files into libraries.
Panther cannot write to libraries created by versions of JAM. To upgrade and make writable a preexisting library, use formlib with the During development, libraries can exist anyplace on your network. If your development environment includes shared libraries on a server (remote libraries), your clients can have access to those libraries via a (provided) development server ( For more information on opening libraries, refer to "Opening and Creating a Library" in Using the Editors.
Libraries now automatically reuse space as part of normal processing. Because of this, libraries now require read locks as well as write locks. Two methods of library file locking are used, internal and external, depending on the platform. By default, the internal (native OS) file locking system is used on UNIX and Windows. If an external file locking method is used, lock files must be created in the directory where the library exists; make sure the directory where the libraries reside is writable.
During deployment, it is advantageous to make all your libraries read-only, so that no file locking is required. However, if you decide to make an application library writable, make sure that if external locking is used, lock files can be created in the directory where the library resides.
For more information, refer to Chapter 10, "Accessing Libraries," in Application Development Guide.
Source control is now available (SCCS, PVCS) for JPL, menus, and styles–in addition to screens—that are in libraries under source control.
A Panther application can consist of a set of libraries, depending on the product and architecture.
All Panther applications are installed with a library named client.lib in the Libraries, not Files
-w
flag. In the screen editor, if an attempt is made to access a library that has not been upgraded, a warning instructs you to upgrade the library. Note that Panther can still read preexisting libraries.
devserv
) configured to access remote libraries. With Panther, access is provided to both local and remote libraries from the screen editor, the menu bar editor, the styles editor, and the JIF editor.
Library Locking
Source Control
Libraries Names
config
directory. When you start Panther, this library will be opened unless different libraries are specified in the environment or initialization file using SMFLIBS. It contains:
client.lib
—smwizard.bin
, smwzmenu
, styles.sty
, and numerous graphics files.
A Panther JetNet/Oracle Tuxedo application consists of a set of libraries:
JetNet and Oracle Tuxedo Applications
client.lib
—smwizard.bin
, smwzmenu
, styles.sty
, and numerous graphics files
The Library Table of Contents window gives you access to library members, and permits you to add external files, such as bitmaps, into open libraries.
Although it is recommended and documented that all application files (for example, screens, JPL modules, graphics, and menus) be stored in libraries, this release of Panther will continue to support applications that reference files outside of Panther libraries. To ensure compatibility with future releases, it is recommended that newly developed applications store files in libraries.
Use commas to delimit initial values in global and vars declarations.
The send and receive commands have changed for word-wrapped fields. Word-wrapped fields are now sent as a single item; the receive command should specify a word-wrapped field which permits it to use sm_ww_write to place the text.
Another change is that the number of available bundles can be set with the In previous versions of the product, an expression which mixed numeric with string variable assignments yielded inconsistent results. It is illegal to mix these assignments within one expression. For example, the following assignment previously yielded either 0 or an empty string, depending on which version is being used:
Now, this assignment generates a syntax error.
The COM and WebSphere applications can call the following JPL commands:
References to Files Outside of Libraries
JPL Programming
Declaring Variables
Sending and Receiving Data
max_bundles
application property. It defaults to ten bundles (including the unnamed bundle) if unspecified.
Variable Assignments
%.0 a='' // Assigned '' to a
Application Properties
@jam
property shortcut for the application name has been replaced with @app()
. @jam
will continue to work for backward compatibility.
New Commands
JetNet and Oracle Tuxedo applications also have additional commands (see "JPL Commands."
In addition to C and JPL, you can program your application behavior in Java. In the editor, Panther objects (screens, service components, widgets) can be assigned a Java tag, which defines a Java class to act as an event handler for that object.
At runtime, when a given object has an event handler associated with it, Panther will invoke the methods supported by the event handler in response to application events.
The event handler classes must provide methods that correspond to the various kinds of events supported by the object with which it is associated. To this end, predefined interfaces, that the event handler classes must implement, have been provided.
For more information on Java programming in Panther, refer to Chapter 21, "Java Event Handlers and Objects," in Application Development Guide.
Internal (native) file locking is now the default for Windows, and you will need to run In Windows executables, double clicking on the name of any file in a library will open the file in the program associated with it according to the Windows File Type setting.
MSVC project files are now available for rebuilding your Panther executables.
In JetNet and Oracle Tuxedo executables, developers can have personal copies of screens in library files and services in the JIF in order to make and test changes during development.
Java Interface
Internal File Locking Available on Windows
formlib -e
on a library in order to continue using external lock files. Once a library is set to external file locking with formlib -e
, you must run formlib -i
on that library in order to use internal file locking.
Opening Library Files in Windows
MSVC Project Files
Team Development
Utilities |
A change has been made to the way the -e
file extension option is implemented on UNIX in the utilities cmap2bin, jpl2bin, key2bin, msg2bin, msg2hdr, var2bin, and vid2bin. Formerly, in UNIX, file extensions were appended to existing extensions. In DOS, using -e replaced an existing file extension. Now, use of the -e
option works the same on both platforms—any existing file extensions are replaced.
Changes were made to the following utilities:
The following changes were implemented for the -u
option:
dd5to6
utility has been renamed as dd5upg
.
f2asc
also converts reports and service components. ASCII files for screens and service components start with a S: output area containing screen/component properties; ASCII files for reports start with a R: output area. The output area for static labels has changed from S: to L:. The output area for the service component's interface starts with I:.
f5upg
(previously f5to6
), a new -p
option includes the GUI interface values for the hmargin
, vmargin
, hbuffer
, vbuffer
properties in the converted screens.
formlib
with the -w
flag. In the editor, if an attempt is made to access a library that has not been upgraded, a warning instructs you to upgrade the library. Note that Panther can still read preexisting libraries.
The -m
flag now compacts the library by removing unused space. Using this option before making the library read-only will allow the read-only operation to be reversible. (This option is only available for Panther libraries.)
The -o option makes a library read-only. Be aware that once this is done, the library cannot be made writable again unless the library is first compacted with the -m
flag.
The -s
flag now synchronizes a library with the source code management directory. This used to be accomplished with the -m
flag, along with library compacting.
monitor has new options: -restart which combines the clean, stop, and start options and -install for installing the application as an service.
r2asc
r2asc
utility has been superseded by f2asc; therefore, to convert a report between binary and ASCII output, use f2asc
.
rinherit
rinherit
utility has been superseded by binherit; therefore, to batch update all reports with inherited values from your application's repository, use binherit
.
rw6toprl
rw6to7
has been renamed as rw6toprl
.
For step-by-step instructions, refer to Appendix B, "Web Setup Manager," in Web Development Guide.
Configuration |
Prolifics*positionIsFrame
. When placing a window at a specific position on the display, the requested position can be for the placement of the frame or for the placement of the client window inside the frame. If the position is for the frame, set this resource to true (the default setting).The window manager can have a resource of the same name. The value of the Prolifics resource should match the value of the window manager. The distributed resource files are in the config
directory.
SMRBCONFIG
, SMRBHOST
, and SMRBPORT
. For more information on middleware connections, refer to Chapter 9, "Connecting to the Middleware," in Application Development Guide.
SMWSADMIN
.
SMTPCLIENT
to specify whether Oracle Tuxedo connectivity is enabled and what type of client is needed (native or workstation). Set SMTPINIT
to specify the default arguments to the client_init
command.
SMPROVIDERURL
.
API Changes |
The Panther API has been significantly expanded to accommodate the middleware API and to incorporate other product changes.
The @jam
property shortcut for the application name has been replaced with @app()
. @jam
will continue to work for backward compatibility.
Two additional flags are now documented for widget functions:
K_EXTEND
K_EXTEND_LAST
For more information, refer to "Creating Services with the Screen Wizard" on page 5-5 in JetNet/Oracle Tuxedo Guide.
As of Panther 4.2, you can use the same programming interface for both COM components and Enterprise JavaBeans in a Panther application:
sm_obj_call
current_component_system
.
There are new properties associated with service components:
current_component_system
)
PV_SERVER_COM
for COM components or PV_SERVER_EJB
for Enterprise JavaBeans deployed under WebSphere Application Server.
in_server
)
PV_SERVER_COM
, PV_SERVER_MTS
or PV_SERVER_EJB
.
provider_url
)
SMPROVIDERURL
is set in the environment, the property is initially set to this value.
Web and Windows applications can create and deploy ActiveX controls in client screens. Windows 32-bit applications can create COM components and deploy them under COM, DCOM, and MTS.
There are new library functions associated only with use of ActiveX controls and other COM objects. Additional functions are documented in "Component API Changes."
sm_com_load_picture
For COM components running under MTS, there is a set of wrapper functions to the associated MTS methods.
sm_mts_CreateInstance
sm_mts_CreateProperty
sm_mts_CreatePropertyGroup
sm_mts_DisableCommit
sm_mts_EnableCommit
sm_mts_GetPropertyValue
sm_mts_IsCallerInRole
sm_mts_IsInTransaction
sm_mts_IsSecurityEnabled
sm_mts_PutPropertyValue
sm_mts_SetAbort
sm_mts_SetComplete
In addition to the properties for ActiveX controls listed here, refer to "New Properties for Components."
control_name
), CLSID
(clsid
), and Runtime License (runtime_license
). ActiveX controls are available in Web and Windows applications.
Under Active X, select the Control Name from the option menu. The CLSID
property is automatically filled.
Under Active X, enter the An ActiveX control can have its own set of properties which you can access at runtime using the syntax CLSID
for the ActiveX control.
ax_property_name
, which prevents naming conflicts between Panther properties and ActiveX control properties.
For more information about ActiveX controls, refer to Chapter 18, "ActiveX Controls," in Using the Editors.
There are new library functions associated with sorting data in arrays and grids:
sm_obj_sort
There are new properties associated with the use of grids:
column_click_action
)
column_click_func
)
default_row_margin
)
row_margin
)
sort_order
)
sort_order_func
)
There are new properties associated with use of the tab controls in Windows applications:
card
)
card_entry_func
)
card_exit_func
)
expose_function
)
hide_function
)
card_number
)
conceal_tabs
)
deck
)
number_of_cards
)
tab_entry_func
)
tab_exit_func
)
New logical keys, NCARD
and PCARD
, move to the next card and previous card respectively.
The new library functions associated with the database interfaces are:
dm_cursor_engine
dm_odb_preserves_cursor
There is a new property associated with database connections:
conn_pool_size
)
The new database interface commands are:
|
|
The following commands used in conjunction with the database interface have changed:
|
|
The new library functions associated with the transaction manager are:
The following library functions used in conjunction with the transaction manager have changed:
TM_SV_SEL_COUNT
determines if an initial query will be performed in order to determine the number of rows in the select set. Five new arguments are available: TM_CANCEL_ON_DISCARD
, TM_CURRENT_COMMAND
, TM_SAVE_COUNT
, TM_SV_SEL_COUNT
, TM_XA_TRANSACTION_BEGUN
.
TM_CANCEL_ON_DISCARD
, TM_SV_SEL_COUNT
, TM_XA_TRANSACTION_BEGUN
.
TM_COMMAND_ROOT
, identifies the root table view of the current command.
There are several new properties associated with the transaction manager. Some are settable via the Properties window and others are readable and/or writable only at runtime. They are:
bi_string
[iter
])
iter
specification lets you walk through the list of rows.
continue_func_name
)
CONTINUE
operations in the transaction manager for the specified server/table view. The Select Handling property must be set to Function Name.
count_result
)
TM_SELECT_COUNT
event), that is, the total number of rows in the result set. The value is examined to determine whether to query the user about proceeding with the normal SELECT
statement.
count_select
)
count_result
property) to a specified threshold (Count Threshold property) value before actually fetching data. This property is readable and writable.
default_tran
)
del_func_name
)
delete_handling
)
PV_HANDLING_SQL
), Function Call (PV_HANDLING_FUNC
), or Nothing (PV_HANDLING_NOTHING
).
di_string[
iter
]
)
iter
specification lets you walk through the list of deleted rows. Use in conjunction with the num_del_images
property.
ins_func_name
)
insert_handling
)
PV_HANDLING_SQL
), Function Call (PV_HANDLING_FUNC
), or Nothing (PV_HANDLING_NOTHING
).
join_type
)
PV_LNK_SERVER
), the Join Type property is available. It can be set to: Inner (PV_INNER
) (default), Left Outer (PV_LEFT_OUTER
), Right Outer (PV_RIGHT_OUTER
), or Full Outer (PV_FULL_OUTER
). This property lets you take advantage of SQL join facilities, whereby you can control the join operation of a SELECT
statement that combines information from two database tables.
Number of Columns (num_columns
)
num_del_images
)
primary_key_update
)
regenerate_ins_sql
, regenerate_upd_sql
)
save_func_name
)
SAVE
operations in the transaction manager for the specified server/table view. The Delete Handling, Insert Handling, or Update Handling properties must be set to Function Name.
sel_func_name
)
select_handling
)
PV_HANDLING_SQL
), Function Call (PV_HANDLING_FUNC
), or Nothing (PV_HANDLING_NOTHING
).
tm_transaction
)
count_threshold
)
count_result
property) exceeds this value, the user is prompted before the data is actually fetched.
upd_func_name
)
update_handling
)
PV_HANDLING_SQL
), Function Call (PV_HANDLING_FUNC
), or Nothing (PV_HANDLING_NOTHING
).
count_warning
)
Count
Select
property when Count
Select
is set to Yes. Use to specify whether the user is prompted, before the data is actually fetched, when the size of a result set (stored in the server view's count_result
property) exceeds the value in the Count Threshold property.
fetch_directions
)
Both the table view Directions property and the screen Fetch Directions property have an additional value, none, which when set eliminates the possibility of doing CONTINUE
command processing on a server view. CONTINUE
functionality can consume system resources, therefore, using this property value can allow you to better control how a SELECT
is issued against the table view.
memo1...memo9
) properties for table views and links
rel_child
(database column in child table view), rel_parent
(database column in parent table view), and rel_op
(type of relationship–join or lookup).
Other property changes for the transaction manager are:
column_length
), Precision (column_precision
), Scale (column_scale
), and Type (column_type
).
RELEASE
, which releases the database cursors when the transaction manager is active.
WALK
commands
WALK
commands direct the transaction manager to traverse the transaction tree of an application screen. These commands have no processing attached to them in the transaction models so the traversal can be used to fire any transaction event functions.
Traverses the tree in delete order. | |
Traverses the tree in insert order. | |
Traverses the tree in select order. | |
Traverses the tree in update order. |
If you write your own transaction manager event functions, three new slices were added to the TM_SELECT
and TM_VIEW
request events in order to check the size of the select set:
|
|
|
For database transactions, the following slices were added to the SAVE
command:
|
|
|
|
In conjunction with VBScript support, the JavaScript Events category in the Properties window was renamed Browser Events. A new event is also available:
OnMouseOut
event
OnMouseOut
event for widgets is now available. This property lets you specify a JavaScript or VBScript function to execute when the mouse pointer leaves an area (in client-side image maps) or a link.
There is a new library function associated with Web applications:
There are several new properties associated with Web applications:
default_link
)
html_max_loop
)
html_max_nest
)
html_name
)
variable->html_name
}}.
ins_del_buttons
)
on_mouse_out
)
previous_form
)
stylesheet_data
)
stylesheet_link
)
stylesheet_source
)
stylesheet_type
)
submit
)
vbscript
)
webid
)
There are several property changes associated with Web applications:
label
) property
label
) is now available for grid widgets. The setting provides a caption for the HTML table in Web applications.
default_link
) property
link
) in previous releases has been changed to Default Link (default_link
).
In addition, business graphs can be assigned a URL. If no value is set, the graph does not act as an HTML link.
style
)
There are new properties associated with the use of dockable toolbars in Windows applications:
toolbar_allowed_sites
)
PV_TOOLBAR_FLOAT
, PV_TOOLBAR_TOP
, PV_TOOLBAR_BOTTOM
, PV_TOOLBAR_LEFT
or PV_TOOLBAR_RIGHT
.
toolbar_x_position
, toolbar_y_position
)
toolbar_current_site
)
PV_TOOLBAR_FLOAT
, PV_TOOLBAR_TOP
(default), PV_TOOLBAR_BOTTOM
, PV_TOOLBAR_LEFT
, or PV_TOOLBAR_RIGHT
.
toolbar_hidden
)
PV_YES
and PV_NO
. Users can hide the toolbar by clicking on the X in the upper-right corner of the menu.
These are the remaining new properties not covered in previous sections:
endsession
)
WM_ENDSESSION
message.
java_tag
)
max_bundles
)
queryendsession
)
WM_QUERYENDSESSION
message.
screen_type
)
help_screen
)
mni_jam_help
(menu item Help property) is now mni_help
.
The screen property (JAM Help property) and its corresponding mnemonic, jam_help_screen
are now Help Screen and help_screen
, respectively.
style
)
The @jam
property shortcut for the application name has been replaced with @app()
. @jam
will continue to work for backward compatibility.
A new series of logical keys have been added for selecting text:
In addition, EXTD
and EXTU
now also apply to text fields as well as list boxes.
There are several new library functions for use in application building:
The following library functions have been changed or discontinued:
sm_fi_open
sm_fi_open
was used to find a file (along the Panther's search path) and open it in binary read-only mode. Use sm_fi_path instead to search along Panther's search path. Then call fopen
(a standard C function) to open the file in any way you choose (it does not limit you to binary read-only mode).
I_INERROR
, is available to determine if a message box is being displayed.
sm_msgread
sm_n_msg_read
—Reads messages from a named file with standard file lookup protocol.
sm_d_msg_read
—Reads messages from the default message file (SMMSGS
variable.
The message classes have also been updated; FM_MSGS
, JM_MSGS
and JX_MSGS
messages are now located in SM_MSGS
. The value for WB_MSGS
has also been updated. Any instances of sm_msgread
in a Panther application should be updated to the new message classes.
Database Interface |
For additional information, refer to "Database Interface API Changes."
DBMS SQL
statements that specify data modification and do not return data (INSERT
, UPDATE
, and DELETE
statements) are executed by simply passing the SQL statement to the database immediately to process the statement quickly and efficiently. For SQL statements that return rows (SELECT
), the process includes a prepare and execute cycle. This means that the database is first notified where to put the data (if any), and then tells the database to execute the SQL.
The method used to determine if a SQL statement returns rows is to execute the SQL statement and see if it returns rows. If it does, it goes through the prepare and execute cycle—essentially executing the SELECT
statement twice. If the statement is a stored procedure which inserts a row and then selects back data, the stored procedure is executed twice and therefore causes two copies of the row to be inserted.
The new method of SQL statement processing includes two new DBMS statements which will improve SELECT
-type processing and performance:
Performance is improved because:
SELECT
) statements are not executed twice.
The new recommended syntax for DBMS DECLARE CONNECTION allows the values for the connection options to contain spaces or punctuation characters. Use the WITH
keyword in the statement (instead of FOR
) and connect the option and value with an equal sign in comma-separated pairs. Variables no longer need to be colon-expanded; strings must still be in quotation marks. The following example contains two variables for the user and password and a quoted string for the database path:
DBMS DECLARE c1 CONNECTION WITH \
USER=user, PASSWORD=pword, \
DATABASE="C:\Program Files\Prolifics\videobiz"
Since the variables are not colon-expanded in this variant, the values will not appear in error messages and trace statements.
DBMS CATQUERY now supports writing to a filename containing spaces or punctuation. Create a variable for the filename and use the variable in the new command syntax:
vars query1 = "query results"
DBMS CATQUERY TO FILENAME query1
This syntax does not replace DBMS CATQUERY TO FILE
, which is supported unchanged.
Transaction Manager |
For information on API changes (functions, properties, commands, slice events), refer to "Transaction Manager API Changes."
The previous set of database-specific transaction models delivered with Panther have been replaced with smaller, more manageable models. In addition to the database-specific model, each engine also accesses a common transaction model, containing the functionality common to all of the database engines. The source code for the new database-specific transaction models is provided and can be modified to make global changes in transaction manager functionality. The common model should not be modified; however, the source code is available for reference.
Having a database-specific model expands the event processing in the transaction manager. As in previous versions, the transaction manager first checks to see if an event function has been specified for the event. If so, it is processed; otherwise, the transaction manager proceeds to the database-specific transaction model. If database-specific processing for the event is required, it must be contained in this model. Otherwise, the transaction manager proceeds to the common transaction model and performs the processing defined there.
To call the common model in addition to an event function and the database-specific model, have the event processing in the event function and the database-specific model return TM_PROCEED
, which passes the processing to the next level. The common model is always called for TM_START
and TM_FINISH
events.
The common model provides plausible processing for every event known to the transaction manager. This includes default behavior for the database transaction events. While a majority of the database-specific transaction models set the mode to initial after a database transaction is committed, the common model does not, leaving this for the database-specific transaction models.
If you have revised an existing transaction model, the revised version can continue to serve as a database-specific transaction model. Since none of the previously distributed transaction models return TM_PROCEED
, unless this return value has been explicitly coded, the transaction manager will only access the common model for the new transaction manager events.
If you have implemented a transaction manager event function and use one of the existing transaction models, there is no visible effect with the replacement of the old models with the new.
Web Application Development |
For additional information, refer to "Web Application API Changes."
Web initialization files have the following new initialization variables:
NumServers
—The number of jserver processes, or concurrent users, for an application. This setting replaces the MinServers
and MaxServers
settings which are no longer available. Web applications from previous releases need to update their web initialization file to the new variable.
In previous releases, a Panther web application read the values from a global initialization file before reading the application's initialization file ( If you are using a global initialization file ( A new Web-based utility, the Web Setup Manager, will help write and configure the files needed for your Web application.
For step-by-step instructions, refer to Appendix B, "Web Setup Manager," in Web Development Guide.
HTML templates behave as Panther screens, allowing you to have the flexibility of how the HTML is created tied in with the power of the Panther backend. In the HTML Template property, you specify the name of the HTML document to use in conjunction with the Panther screen.
One Initialization File
appName.ini
). This was done so that the proweb.ini
or jamweb.ini
could define any global values which are common among all web applications, but it caused problems for application maintenance. Therefore, the distributed proweb.ini file will no longer be read when you have an application initialization file. Only one initialization file is read for each Web application.
proweb.ini
or jamweb.ini
) to set global parameters, merge all global values into your application-specific initialization file.
New Web Applications
HTML Template Changes
form:info
}} template tag.
variable
>> to {{variable
}}. In addition, there are new tags for HTML templates:
Two application properties are associated with HTML loop processing: html_max_loop
to limit the number of loop iterations and html_max_nest
to limit the number of nesting levels.
The syntax for accessing Panther variables has changed from <<variable
>> to {{variable
}}. This new syntax can be used in JavaScript, VBScript, the Custom HTML properties (such as Prefix Markup and Suffix Markup), and HTML templates.
When screens are submitted at runtime, Panther variables (@web_action
, @web_action_widget
and @web_action_occurrence
) contain information about the push button that was pressed and the widget's object ID and occurrence number, if applicable. These variables can be accessed in web_enter
processing. For more information, refer to "Web Entry Context Flags" in Web Development Guide.
The state of the application can now be obtained when performing a GET
for Panther files. In previous releases, invoking screens and reports via a GET
caused the state information to be lost. The following can now be accomplished:
To implement this caching behavior, two new application properties are available:
previous_form
)
webid
)
To access the cache file, a new name=value pair can be encoded as part of the URL:
@webid=cacheFile
For more information, refer to "Getting Screens from the Server" in Web Development Guide.
If you are using an ISAPI- or NSAPI-compliant HTTP server, use the new ISAPI and NSAPI versions of the requester executable, instead of the CGI version, for faster processing of your HTTP requests.
If you are using Windows as your Web application server:
FAT
, to improve your system performance.
A Panther web application can run as a Java servlet. For more information, refer to Appendix D, "Using Java Servlets," in Web Development Guide.
Two JPL globals, In order to control widget positioning in Web applications better, a COLS attribute has been added to the table definition in the generated HTML. This will affect the widget positioning for screens built in previous versions of Panther. For new screens, there is a higher correlation between the GUI position and the HTML position.
Additionally if you create multiple boxes or grids which are aligned on two sides in the screen editor, they will now appear to be aligned in the Browser.
Note that one browser may create its widgets using different font families and sizes than another browser, or than the Panther screen editor. This results in screens that can appear slightly different (more or less space between widgets) from browser to browser, or from browser to screen editor.
Some helpful tips are:
Running Java Servlets
Determining Mouse Location
@web_image_click_x
and @web_image_click_y
, contain the X and Y coordinates of the user's mouse click for use in JPL procedures.
Widget Positioning in Web Applications
Additional error text has been added for the requester, dispatcher, and jserver programs. Errors for the Web application server have also been added to the Panther message file.
The following changes have been made to the gallery of Web application samples:
Errors in Web Applications
Web Gallery Samples
By clicking on the scroll buttons of the grid, the custom representation of the data is also updated at the bottom of the screen.
For wizard-generated Web screens, the default values have changed for some properties. The Border, Title Bar, and System Menu properties now default to No.
With the change in naming conventions, smrepost.jam becomes smrepost.scr.
Reports |
If you need to modify a report created with JAM/ReportWriter 6, you must first convert it to a Panther report file using the rw6toprl
utility. From the command line, type:
rw6toprl [-fgkm]rw6Report
pantherReport
-f
-g
-k
-m
The utility converts GUI coordinates to column and row (whole-number grid units, as though in character mode) coordinates to position widgets. To ensure GUI coordinates, run rw6toprl
with the -g
option.
As of Prolifics 2.5, several changes were made inside the report editor. To edit report files created in previous versions, you need to manually rescale the grid in the report editor using either of the following methods:
To resize a widget in ReportWriter, do not drag the widget by its edges; set the widget size by setting the font size.
In Windows, if reports are generated using the The Setting Widget Size
Printing PostScript
driver=postscript
option, those reports must be printed using a Windows print driver that supports PostScript. Some printer models have more than one printer driver; install the PostScript version for PostScript reports.
Report Utilities
r2asc
utility has been superseded by f2asc
; therefore, to convert a report between binary and ASCII output, use f2asc
. The rinherit
utility has been superseded by binherit
; therefore, to batch update all reports with inherited values from your application's repository, use binherit
.
Upgrading to JetNet |
JetNet, Panther's three-tier middleware product, is available for UNIX and Windows server. This section lists the additional features available in that product.
If you use the screen wizard to create screens, these properties are automatically defined.
styles.sty
, is distributed in client.lib
and server.lib
.
For JetNet/Oracle Tuxedo applications in order to debug your server, you must configure a debuggable server. For more information, refer to "Server Details" on page 3-22 in JetNet/Oracle Tuxedo Guide.
The debugger will only access compiled JPL code saved in libraries. If compiled JPL is put in a library outside of the editor (with the Service components reside on the server, and are used to map data between client screens and services. In a running application they are not visible to the user. During development, if you execute a debuggable server, service components can be viewed in Test mode, or you can test it like a client screen if you have a direct connection to the database. They can be created using the screen wizard at the same time you create client screens.
For JetNet/Oracle Tuxedo applications, the JIF is a file that contains service information required by both the clients and servers of your application. A JIF is created and edited using the JIF editor and can be set in the environment using For more information on the JIF and the JIF editor, refer to Chapter 24, "JIF Editor," in Using the Editors.
Panther provides several utilities to configure and operate your three-tier application. For the Oracle Tuxedo middleware adapter, use utilities provided by Oracle Tuxedo that perform similar functions, such as Debugger
jpl2bin
and formlib utilities), the binary JPL file must include the JPL source code. This means that you must not use the -r
flag with jpl2bin
. For more information on compiling JPL source code, refer to jpl2bin
in Application Development Guide.
Service Components
JIF
SMTPJIF
.
Administration Utilities
tpadmin
.
jetman
, the JetNet manager, is an interactive utility that performs all the functions necessary to configure, boot, monitor, and shutdown JetNet and your application's servers. jetman
contains all the functionality of these utilities: rbconfig
, rbboot
, and rbshutdown
.
SMFLIBS
can now point to multiple libraries. Separate directories with a vertical bar (|) or use the convention used by your operating system for listing multiple directories in path. (For UNIX, this is a colon, and for Windows, it is a semi-colon.) The default setting automatically opens client.lib
, server.lib
, and common.lib.
SMTPJIF
.
Errors resulting from database access are handled differently when the server is connected to the database, as opposed to two-tier processing where the client is connected directly to the database. Default error handling on the server also depends on the environment: development or production.
There are new default database error handlers for servers. The DBMS In JetNet and Oracle Tuxedo executables, developers can have personal copies of screens in library files and services in the JIF in order to make and test changes during development.
A new menu option, OptionsService Alias allows you to specify a user identifier to use when testing services. For more information, refer to "Using Service Aliases to Test Services" on page 5-8 in JetNet/Oracle Tuxedo Guide.
To use this feature, the application server must have a service alias defined. Once defined, the library function sm_tp_get_svc_alias returns the value of the service alias for the application server.
A JetNet-specific transaction model is provided for applications that use the transaction manager in the client side of your application: jetrb1. This database- and middleware-independent model is designed to process transaction manager events by requesting service calls, for example, when:
Database Error Handling
ONENTRY
default error handler logs each DBMS command in the development environment, but does nothing in a production environment. The DBMS ONERROR
function default error handler logs all DBMS errors to the central user log file in both the development and production environments.
Team Development
Transaction Model
clnt2svr
utility).
A conversion server, progserv, is provided to process service requests made by client screens that use the transaction manager but do not have Service property specifications, such as screens created from a For JetNet/Oracle Tuxedo applications, there is a middleware layer of event handling. Several event types are defined, and built-in handlers are provided for both development and production executables. Default handlers are installed and can be overridden by using new, runtime, application-specific property settings.
For information on middleware API events and event handling, refer to Chapter 6, "JetNet/Oracle Tuxedo Event Processing," in JetNet/Oracle Tuxedo Guide.
There are several JPL commands associated with use of the JetNet and Oracle Tuxedo applications:
Note that each new JPL command represents a potential name conflict with existing variable and field names in your application. All JPL commands are reserved keywords.
The receive command has been enhanced to provide middleware support. It is used to receive message data, for example by service routines to receive client data.
For more information on these commands, refer to Programming Guide.
There are several library functions associated with use of the JetNet and Oracle Tuxedo:
There are several properties for JetNet and Oracle Tuxedo applications:
progserv
clnt2svr
conversion.
JetNet and Oracle Tuxedo Event Handling
API Changes for JetNet and Oracle Tuxedo Applications
JPL Commands
advertise
notify
unload_data
client_exit
service_call
wait
client_init
service_cancel
xa_begin
jif_check
service_forward
xa_end
jif_read
service_return
xa_commit
log
unadvertise
xa_rollback
Library Functions
Properties
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If you are upgrading a two-tier application that uses the transaction manager to three-tier–either a pre-Enterprise application or a two-tier Panther application– you must use the clnt2svr
(client-to-server) utility provided with the Panther distribution.
The clnt2svr
utility creates three-tier client screens and service components from the two-tier client screens in the library you provide as input. Upon completion, the service components, and optionally any JPL procedures associated with the original client screens, are placed in a library which can be used as the server library in a three-tier application. Also, the client screens are updated to use the default three-tier transaction model jetrb1, and stored in a new client library. The input library is left unchanged.
Certain property values that existed on the client screens are removed from the service components created from them in order to avoid unnecessary entry processing on the server.
To convert your two-tier JAM application to a three-tier Panther application:
formlib
and create a two-tier client library from all client screens and client JPL.clnt2svr inputLib
A new client library (cl.lib
) and a server library (sv.lib
) are created from the input client library, which is left intact.
SMFLIBS
on the client and server to recognize and open the new libraries on application startup.
clnt2svr is described in more detail in JetNet/Oracle Tuxedo Guide.
If you are not ready to convert your existing application to three-tier, you need to put all the screens, modules and bitmaps in a library in order to use it with Panther. Run formlib
and create a client library from all client screens and client JPL, or add them to the distributed client library (client.lib).
Consideration needs to be made for existing JPL code. JPL modules must be compiled before they are put in libraries. JPL can be compiled in two ways:
cp mymodule.jpl old/mymodule.jpl
jpl2bin -b -f -e- mymodule.jpl
Upgrading to Panther for IBM WebSphere |
Refer to Panther for IBM WebSphere Developer's Studio for information about:
Documentation |
The titles of some manuals have changed in this release:
A new Quick Reference manual has been printed, containing a list of the property names, library functions, JPL commands, and transaction manager commands. The properties reference section of that manual is available online. For changes to the Quick Reference since its printing, refer to "Quick Reference Changes and Corrections."
The Application Development Guide has been totally re-organized in order to illustrate a typical development process.
Panther documentation is now available in HTML and PDF formats. For more information about Panther online documentation, refer to Appendix A, "Panther Online Documentation," in Installation Guide.
Other documentation changes not listed in previous sections are:
@cgi_request_method
, are now referred to as HTTP server variables.
cgi-bin
directory
sm_card_val
sm_tw_val
sm_validate
.
sm_msg_del
sm_msg_read
FM_MSGS
, JM_MSGS
and JX_MSGS
messages are now located in SM_MSGS
. The value for WB_MSGS
has also been updated.
sm_prop_get_str
The Panther Quick Reference which was printed in November 1999 does not have the following changes.
SMIBMVJAVA, SMPROVIDERURL, SMTPCLIENT, SMTPINIT, SMWSADMIN
sm_com*
Functions
column_click_action
)
column_click_func
)
conn_pool_size
)
current_component_system
)
PV_SERVER_COM
for COM components or PV_SERVER_EJB
for Enterprise JavaBeans deployed under WebSphere Application Server.
html_max_loop
)
html_max_nest
)
if
, while
, or include
constitutes one level. The default setting is 20.
in_server
)
PV_SERVER_EJB
.
max_bundles
)
provider_url
)
runtime_license
)
sort_order
)
sort_order_func
)
-m
option for compacting the library.