© Copyright IBM
Corporation 2000, 2005. All Rights Reserved.
Welcome to the IBM® Informix® 4GL to EGL Conversion
Utility, for Rational® Application Developer Version 6.0.0.1
1.0
About this feature
2.0
Documentation
3.0
Known limitations
4.0
Tips
5.0
Contacting customer support
6.0
Notices and trademarks
This release contains the Conversion Utility
that would assist an application conversion from InformixTM 4GL to
Enterprise Generation Language (EGL). This conversion utility requires
the installation of Rational Application Developer (or Rational Web Developer)
Version 6.0.0.1, iFix003.
This Conversion Utility provides the following capabilities:
Note: Converting an I4GL application to EGL requires many
pre-conversion and post-conversion steps. Conversion Utility users are
strongly encouraged to read the IBM Informix 4GL to EGL Conversion Utility
Users' Guide (User's Guide) before converting their applications with the
Conversion Utility. The User's Guide provides a list of conversion
limitations. For a complete list of temporary Conversion Utility
limitations, see Section 3.0 Known Limitations below.
IBM Informix 4GL to EGL Conversion Utility Users' Guide leads I4GL users
through the Conversion Path to EGL. This documentation is available at
the root directory of this iFeature:
<RAD_HOME>/egl/eclipse/plugins/com.ibm.etools.i4gl.conversion_<version>/
The information center contains extensive documentation on how to
use both EGL and the full range of product features. Access the information
center from the main menu by selecting Help>Rational Help.
This section lists the current known limitations for EGL
that are important to the 4GL support and the 4GL to EGL conversion
support.
Description
An I4GL
construct statement that uses a screen array will default to the first element
in that screen array. In EGL, the
specific element of the screen array must be specified, otherwise a no field
found runtime exception is thrown.
Workaround
Modify the openUI construct statement to specify
the specific array elements of the screen array to use. For example, add the subscription
notation [1] after the screen array field to specify the first element in the
screen array to be used.
Description
In I4GL,
the statement “for I
= 0 to 1 by -1 “ resulted
in the for loop code block to be executed zero (0) times. In EGL, this same code block will
result in an infinite loop eventually causing an integer out of bounds
exception or a stack overflow exception.
Workaround
Rework the EGL for statement so that the for
loop code block is executed the number of times you desire. Alternatively, the for loop could be
changed into a while statement that executes the code block the desired number
of times.
Description
In I4GL,
the “return” statement was allowed to exit the current running menu or input
command. In EGL, the openUI
statement must be exited using the “exit openUI” statement. In some situations the conversion tool
is not migrating to this syntax.
Workaround
In the event that menu’s and input statements do
not exit during execution, make sure that the “exit openUI” statement is used.
Description
The IF conditions in "IF ! xxx" or
"IF xxx" throw validation errors. Boolean expressions are
not supported in EGL and generate validation errors.
Workaround
The
Conversion Utility automatically converts these IF functions depending upon the
context in which they are used; this limitation does not impact I4GL
application conversion. It's documented here so that I4GL users may know
the support level of IF conditions when writing new applications in
EGL.
For Boolean expressions, convert the Boolean result of a condition
to a numeric value of 0 or 1.
Description
The I4GL
VALIDATE statements is not supported in EGL.
Convert the validate statements to individual assignments where
possible. Validate currently is being commented out with a FIXME comment
around it since there is currently no provision in EGL for it.
Description
If an openUI statement is encapsulated by a for
statement, while statement, if statement, or case statement, an OnEvent action
in an openUI statement cannot exit those statements.
For example:
Program
WORK_1
FUNCTION
main()
x
string;
while
(1==1)
openUI
new PROMPT {message="press J to exit this loop:", ischar=yes}
bind x
OnEvent(ON_KEY:"J")
while
(1==1)
exit
while; // ß-
This is valid as the program is exiting the while statement inside the OnEvent
block
end
exit
while; // <-- This is invalid as the while statement
being terminated is outside the scope of the OnEvent action
end;
end
END
END
Workaround
The work around solution to change the program
logic. One simple way is to change
the “exit” statement to “exit openUI” after setting a Boolean flag. The Boolean flag is then check by the
outer most statement. For example,
taking the above example,
Program
WORK_1
FUNCTION
main()
x
string;
exitFlag
int = 0;
while
(1==1 && exitFlag==0 )
openUI
new PROMPT {message="press J to exit this loop:", ischar=yes}
bind x
OnEvent(ON_KEY:"J")
while
(1==1)
exit
while;
end
exitFlag
= 1; // ß
set a flag that the outer while loop can check against
exit
openUI; // <-- Change the “exit while” to “exit openUI”
end;
end
END
END
Description
The
conversion process is inserting a call to the function
“updateWindowAttributes()” into the converted EGL code. This function is a new function
introduced for the RAD 6.0.1
release, and is not available for
the RAD 6.0.0.1 release.
Workaround
Removing the function reference from the EGL
files will resolve the validation and generation issues.
Description
At
times, the conversion utility expands the screen records for all columns in the
table even though
only a subset of columns are used to define the
screen records.
Workaround
Removing the extraneous column names from the
converted EGL statements.
Description
During
an openUI statement execution of a console form, the returning values in the
bound variables will never contain a “null” value. In I4GL if no value is entered into a form field, a null
value is returned.
Workaround
If your application specifically checks for a
“null” value during or after an openUI statement on a form, the logic will need
to be modified to check for an empty string value, rather than null.
Description
The
conversion of an I4GL case statement that contains open window declarations is
translated into one or more variable declarations for window objects. As the conversion utility cannot
accurately determine the runtime behavior of the case statement, multiple
window variable declarations may be generated which can cause a duplicate
window runtime error.
Workaround
Remove the extraneous window declarations and
tailor the EGL code to use the single window variable object.
There are some programming tips related to the
I4GL to EGL Conversion Utility:
4.1 Screen Record vs. Screen Array
In I4GL, the SCREEN RECORD keywords defined in the form file could also be
referred to as SCREEN ARRAY. This is not supported in EGL, and results in
a runtime error.
4.2 Locale Settings
On Microsoft Windows machines for any non-English locale the Standards and
Formats and the Languages for non-Unicode Programs tabs must be set with the
appropriate locale information.
4.3 Default locale assumption by Conversion Utility
For the default locale, no locale suffix is required at runtime for the EGL
message property files. The
conversion tool will assume US English to be the default locale. Hence, en_us is never added as a suffix
to the converted message property files.
However, if US English is not the preferred default at runtime,
you need to rename the converted message file that is your locale by removing
the locale information. For
example, if your default locale is Chinese and your message property file is
called “myMsg.properties”, rename the myMsg.properties to
myMsg_en_us.properties, and rename the myMsg_BIG5.properties file to
myMsg.properties,
The product home page for Rational Application
Developer is http://www-306.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. You can also
post questions through Rational Application Developer Forum.
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.
Any performance data contained herein was determined in a
controlled environment. Therefore, the results obtained in other operating
environments may vary significantly. Some measurements may have been made on
development-level systems and there is no guarantee that these measurements
will be the same on generally available systems. Furthermore, some measurements
may have been estimated through extrapolation. Actual results may vary. Users
of this document should verify the applicable data for their specific
environment.
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.
All statements regarding IBM's future direction or intent are
subject to change or withdrawal without notice, and represent goals and
objectives only.
This information contains examples of data and reports used in
daily business operations. To illustrate them as completely as possible, the
examples may include the names of individuals, companies, brands, and products.
All of these names are fictitious and any similarity to the names and addresses
used by an actual business enterprise is entirely coincidental.
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. 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 IBM's application
programming interfaces.
Each copy or any portion of these sample programs or any
derivative work, must include a copyright notice as follows:
(C) (your company name) (year). Portions of this code are derived
from IBM Corp. Sample Programs. (C) Copyright IBM Corp. 2000, 2005. All rights
reserved.
If you are viewing this information softcopy, the photographs and
color illustrations may not appear.
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.
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.
Linux is a trademark of Linus Torvalds in the United States, other
countries, or both.
Other company, product or service names, may trademarks or service
marks of others.