IBM Rational Application Developer Interim Fix 003

for Rational Application Developer, Version 6.0.1

© Copyright IBM Corporation 2000, 2005. All Rights Reserved.

Welcome to the IBM® Rational® Application Developer Interim Fix 003 for Rational Application Developer, Version 6.0.1. This interim fix should be installed by anyone who is using Enterprise Generation Language (EGL). It is required if you are installing WebSphere® Developer for zSeries 6.0.1.

Table of contents

1.0 Prerequisites
2.0 New in this release
3.0 Product fix history
4.0 Considerations for I4GL conversion to EGL
5.0 Considerations for VisualAge Generator migration to EGL
6.0 Customer support
7.0 Notices and trademarks

1.0 Prerequisites

You must install IBM Rational Application Developer 6.0.1 before installing Interim Fix 003.

2.0 New in this release

2.1 EGL Page Designer Support for Web Services

The EGL Page Designer has been enhanced to support EGL Web Services. An EGL Web Service object has been added to the EGL palette drawer. Wizards have been added to create an EGL Web Service from Page Designer, and to look up existing services.

2.2 Era Support in date data types

The end-user formats for date-time data types involve characters and symbols that direct the formatting and/or parsing of date-time values. When EGL scans a string that contains date-time data, it uses the date-time end-user format to determine how to convert this string to the internal value of the date-time data types. When EGL prints date-time data, it uses the date-time end-user format to determine how to format the internal value of the date-time data type as a string. The end-user formats for date-time data types can also include the names of ERAS e.g., Japanese Imperial date system. Japanese Imperial-era dates are tied to the reign of the Japanese emperors as well as to the old-style Julian Calendar (which is several days behind the Gregorian). The following table shows Gregorian and Japanese era dates. It shows the Japanese era format in full, with abstract multi-byte characters for the Japanese characters.

Then you would change the Julian dates in the table to Gregorian as follows:
Julian Date Gregorian
1868/09/08 1868/09/20
1912/07/30 1912/08/12
1912/07/31 1912/08/13
1926/12/25 1927/01/07
1926/12/26 1927/01/08
1989/01/07 1989/01/20
1989/01/08 1989/01/21
...
1995/01/01 1995/01/14

EGL supports ERA-based date-time values formatting or parsing with a slight extension of data-time end-user formats. EGL reserves two characters for specifying the calendar in the data-time end-user formats:

That is, the first two characters of the calendar name are indicators for which calendar is to be used in the date/time format. The calendar is the mechanism for converting between a Date object and a set of data-time field values such as ERA, YEAR, MONTH, DAY, HOUR, and so on.

For example, assuming that strLib.defaultDateFormat = "JaGyyyy/MM/dd", then the following statement assigns 1995/01/01 to the date variable.

//assuming A1A2 and B1B2 represent multi-byte Japanese characters for some specific Japanese era.
dateVariableName date = "A1A2B1B207/01/01"

3.0 Product fix history

This interim fix contains fixes for problems in the EGL component. APAR numbers are in parentheses:

Interim Fix 003 contains numerous additional fixes in the following areas:

4.0 Considerations for I4GL conversion to EGL

The following are considerations for converting applications from Informix 4GL to EGL

4.1 Build descriptor changes for converted projects

With this interim fix it is no longer necessary to set the build descriptor for each converted project. Instead, you can set a default build descriptor for a given workspace by selecting from the main menu  Window > Preferences > EGL > Default Build Descriptor. When doing this, make sure you do not have "genProject" or "genDirectory" set in the default build descriptor. For additional information of Build descriptor file refer to Help > Help Contents.

4.2 OpenUI OnEvent execution sequence when Screen Array OnEvent calls GotoField function

The order of the screen array OnEvent actions is slightly different between I4GL and that which is execute for EGL. These differences only exist when the BEFORE_DELETE, AFTER_DELETE, and AFTER_INSERT OnEvent actions invoke the function "gotoField".

The following table lists the order of the actions for I4GL and EGL. Note again that this action difference only occurs when the Screen Array Action executes the "gotoField" function.
Screen Array Action I4GL Action Order EGL Action Order
BEFORE DELETE BEFORE_DELETE
AFTER_DELETE
AFTER_ROW
BEFORE_FIELD
BEFORE_DELETE
AFTER_FIELD
BEFORE_FIELD
AFTER_DELETE
AFTER_ROW
BEFORE_ROW
BEFORE_FIELD
AFTER DELETE AFTER_DELETE
AFTER_ROW
BEFORE_FIELD
AFTER_DELETE
AFTER_ROW
BEFORE_ROW
BEFORE_FIELD
AFTER INSERT AFTER_INSERT
AFTER_ROW
BEFORE_FIELD
AFTER_INSERT
BEFORE_FIELD

4.3 Message file conversion strategy has changed

Informix 4GL message files conversion strategy has changed in 6.0.1 interim fix 003.

Message file conversion strategy

Prior to 6.0.1 interim fix 003, the I4GL conversion tool used a default mapping of Informix Locale to Java encoding; this was totally hidden. Every release of the JDK has been supporting more encoding for a given locale, but you could not take advantage of this enhancement to JDK in the conversion tool.

The configuration file now supports an additional attribute, "encoding", for element "msgfiles". This is a optional attribute which gets automatically populated by the wizard with the default mapping used by the conversion tool. You can change this based on the character sets supported by the JDK, and this changed value will be used during conversion of native messages into Unicode.

Note that not all Informix locales are supported in Java and any unsupported locales will be ignored by the conversion tool. The Conversion Tool Wizard will generate the following

       encoding="UNKNOWN"

for all Informix locales that do not have any equivalent Java encoding.

For example, Informix locale "zh_tw.sbig5" is Informix GLS specific and does not have any mapping in JAVA. You will have to either ignore this or rewrite these messages in "zh_tw.big5" to run through the conversion tool.

Message file conversion process

Given a 4GL message file the conversion tool will now do the following:

For example: Given a configuration file with message elements for conversion project is

....
<msgfiles locale="en_us.8859-1" encoding="ISO8859_1">
<file>english/4gl.msg</file>
</msgfiles>

<msgfiles locale="ja_jp.sjis-s" encoding="Cp943C">
<file>japanese/4gl.msg</file>
</msgfiles>
.....

This says there are two message files in the project both with same name "4gl.msg" but in different directories and are in different locales. After conversion the following files will be created by the conversion tool:

 <EGL ROOT DIR>/MessageSource/en_us/8859-1/4gl.properties

 <EGL ROOT DIR>/MessageSource/ja_jp/sjis-s/4gl_ja.properties

If the converted application is executed in a Japanese environment, make sure that "/MessageSource/ja_jp/sjis-s" is included in the CLASSPATH environment variable.

4.4 Conversion Tool cannot convert I4GL functions with variable argument list to EGL

Unlike 4GL, EGL does not support a variable number of arguments to be passed to EGL function calls. The Conversion tool could manufacture dummy variables to overcome this problem at the time of the conversion, but the result can cause serious problems with the business logic of the application. Therefore, the Conversion tool will not do this at the time of conversion. You are required to resolve this as a POST CONVERSION process.

For example, the following code snippet in 4GL is a valid construct that is not supported by the Conversion tool:

MAIN
DEFINE ret INT
CALL foo(1,2) returning ret
# ^
#---------------| After conversion fix the missing argument for this CALL() statement
CALL foo(1,2,3) returning ret
END MAIN

FUNCTION foo(var1, var2, var3)
DEFINE var1 INT, var2 INT, var3 INT
RETURN var3
END FUNCTION

4.5 Jasper/EGL build sequence clears up .jrxml validation errors

When a report file is first converted from 4GL to EGL, the .jrxml file shows a validation error. This problems stems from the EGL Generation phase not being done during an Eclipse build, while a Jasper report is built during an Eclipse build. When you import an EGL Report Handler and a Jasper report that relies on the generated report, the EGL Report handler is compiled and queued up for generation, and the Jasper Report is compiled. The Jasper report compilation results in an error because the generated Java for the report has not yet been produced. After the Eclipse build, the EGL Report Handler is generated, but the Jasper Report is not re-compiled.

For the 6.0.1 interim Fix 003 release, a dependency graph for the Jasper Report builder has been added, which records which Java classes are depended on by which Jasper Reports. When one of these classes changes in any way, the dependent Jasper Reports are now re-compiled.

When auto-build is on, the Jasper Reports are now compiled, giving an error. The EGL Report is then generated, which produces the .java and .class file for the report. The Jasper report is then recompiled because of the changed .class file based on the dependency graph information. If you delete the .class file, changes the EGL Report, etc., the Jasper report will be compiled again. If you change the Jasper Report, it will also be compiled.

4.6 EGL default date behavior changes

Informix 4GL uses "MDY4/" as the default date behavior, which a 4GL user can override by setting the DBDATE environment variable at compile run time. For the converted 4GL programs to get the same behavior in EGL, you need to set the "vgj.default.dateFormat" property as "MM/dd/yyyy" (or whatever the appropriate value is for the current application).

You can also set the EGL system variable strlib.defaultDateFormat to get nearly the same effect. For this solution, though, EGL System variables have limited scope. Thus, setting the variable in a library does not allow the same value to be visible in another library or main program.

The property "defaultDateFormat" in the EGL build descriptor file is not currently being handled during the EGL generation process. In the future this value will be handled and processed, but for the current interim Fix 003 release its effect is null and void.

4.7 ValidValues[] properties in converted forms may not match data type of the field

EGL requires the values given in "validValues[]" properties of the form specification to be same as binding variable of the EGL function. At the time of conversion, the Conversion tool cannot accurately predict the data type of the binding variable.

If the valid values are not type compatible with the binding variable, a runtime form validation error - "Error In Field xxx" - will terminate the program. In such cases you will have to manually change the type of values given in "validValues[]" properties to the appropriate binding variable type.

In addition, a form field in Informix I4GL that does not have an explicit type specification will, by default, have a runtime type of CHAR. Dynamic type binding still cannot occur if the EGL function variable is of an incompatible type.

5.0 Considerations for VisualAge Generator migration to EGL

5.1 Updating Stage 1 tools

The stage 1 tools for VAGen migration have been updated in this interim fix. You will need to refresh your VA Generator installation with the most recent version, which is at the following location:

   d:\rad601\egl\eclipse\plugins\com.ibm.etools.egl.vagenmigration_6.0.1.003\database

where d:\rad601 indicates the location where Rational Application Developer 6.0.1 is installed.

5.2 Updates to EGL migration documentation

The following changes apply to the VAGen to EGL Migration Guide, Version 6, Release 0 (page numbers are for the English version):

Chapter 4. Stage 1 -- Extracting from Java, add following files to list at bottom of page 101:

Chapter 5. Stage 1 -- Extracting from Smalltalk, add following files to list at bottom of page 121:

Chapter 6. Stage 2 -- Conversion to EGL syntax, add new section just before "Setting your workbench preferences" on page 141

Setting DB2 performance information: After you have created your migration database in Stage 1, you should use the DB2 runstats command to evaluate and set performance information for the DB2 tables. To set the performance information, do the following:

  1. From a DB2 command window, navigate to the directory where runStats.bat is located. For Java, this is your VisualAge-for-Java-install-directory\ide\vgmigration. For Smalltalk, this is your VisualAge-Smalltalk-install-directory.
  2. If you changed the default migration database name (VGMIG) or the default schema name (MIGSCHEMA), change the runStats.bat file to use your database name and schema name.
  3. Run runStats.bat.

5.3 Special instructions for APAR PK13574 - Performance improvements in stage 3 of migration:

If you have previously created a migration database from Stage 1 and want to take advantage of the performance improvements from this APAR, you must do the following:

  1. From a DB2 command window, navigate to the directory where createIndex.sql is located. For Java, this is your VisualAge-for-Java-install-directory\ide\vgmigration. For Smalltalk, this is your VisualAge-Smalltalk-install-directory.
  2. If you changed the default migration database name (VGMIG) or the default schema name (MIGSCHEMA), change createIndex.sql to use your database name and schema name
  3. Run SetupIndex.bat

5.4 Change to default value for sign and align attributes

 For numeric fields on a form, the documented default values are sign=leading and align=right.. However, generated COBOL and Java code were treating the default values as sign=none and align=none. For numeric fields on a form, the documented default values are sign=leading and align=right.. However, generated COBOL and Java code were treating the default values as sign=none and align=none. COBOL generation and Java generation have been changed to honor the documented defaults.

For migrating VAGen customers,

For existing EGL text or print programs or migrated VAGen programs, the behavior of numeric fields that use the default values for the sign or align properties will differ the next time you generate the program. For example, a negative value for a numeric field that previously defaulted to sign=none now behaves as follows for sign=leading:

6.0 Customer support

The product home page for Rational Application Developer is www.ibm.com/software/awdtools/developer/application/index.html. For FAQs, lists of known problems and fixes, and other support information, visit the Support page on the product home page.

7.0 Notices and trademarks

© Copyright IBM Corporation 2000, 2005. All Rights Reserved.

The XDoclet Documentation included in this IBM product is used with permission and is covered under the following copyright attribution statement: Copyright © 2000-2005, XDoclet Team. All rights reserved.

Portions based on Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Copyright © 1995 by Addison-Wesley Publishing Company, Inc. All rights reserved.

U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this documentation in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.

IBM may have patents or pending patent applications covering subject matter described in this documentation. The furnishing of this documentation does not give you any license to these patents. You can send license inquiries, in writing, to:

IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.

For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property Department in your country or send inquiries, in writing, to:
 

IBM World Trade Asia Corporation
Licensing
2-31 Roppongi 3-chome, Minato-ku
Tokyo 106, Japan
 

The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR CONDITIONS OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you.
 

This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice.
 

Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk.
 

IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you.
 

Licensees of this program who wish to have information about it for the purpose of enabling: (i) the exchange of information between independently created programs and other programs (including this one) and (ii) the mutual use of the information which has been exchanged, should contact:
 

Intellectual Property Dept. for Rational Software
IBM Corporation
3600 Steeles Avenue East
Markham, Ontario
Canada L3R 9Z7

Such information may be available, subject to appropriate terms and conditions, including in some cases, payment of a fee.
 

The licensed program described in this documentation and all licensed material available for it are provided by IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement or any equivalent agreement between us.
 

Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.
 

COPYRIGHT LICENSE:
 

This information contains sample application programs in source language, which illustrates programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs.

Each copy or any portion of these sample programs or any derivative work, must include a copyright notice as follows:

© (your company name) (year). Portions of this code are derived from IBM Corp. Sample Programs. © Copyright IBM Corp. 2000, 2005. All rights reserved.

If you are viewing a soft copy of this information, the photographs and color illustrations may not appear.
 

Programming interface information

Programming interface information is intended to help you create application software using this program.

General-use programming interfaces allow you to write application software that obtain the services of this program's tools.

However, this information may also contain diagnosis, modification, and tuning information. Diagnosis, modification, and tuning information is provided to help you debug your application software.

Warning: Do not use this diagnosis, modification, and tuning information as a programming interface because it is subject to change.

Trademarks and service marks

The following terms are trademarks of International Business Machines Corporation in the United States, other countries, or both:

Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.