Article

OpenEdge 10.x and 11.x R-CODE bit compatibility rules

« Go Back

Information

 
Article Number000011613
EnvironmentProduct: OpenEdge
Version: 10.1x, 10.2x, 11.x
OS: All supported platforms
Other: 32-bit r-code, 64-bit r-code
Question/Problem Description
OpenEdge 10.x and 11.x R-CODE bit compatibility rules.
What are the 64-Bit R-Code Portability Guidelines?
Will 64-bit r-code run on a 32-bit platform?
Can 32-bit r-code run on a 64-bit platform?
On a 64-bit platform does 32-bit or 64-bit r-code perform better?
Why is a 64-bit r-code file size larger than the 32-bit r-code?
32-bit and 64-bit r-code deployment considerations.
R-CODE bit compile compatibility rules.
10.1B R-code compatibility with previous versions.
10.1C R-code compatibility with previous versions.
Is it necessary to recompile r-code when migrating to 10.1x?
Can 10.0x generated r-code be executed in 10.1B without recompiling?
OpenEdge 10.2A r-code bit compatibility rules.
OpenEdge 11.0 r-code version change.
When are two sets of r-code needed when deploying to 32-bit and 64-bit environments?
Steps to Reproduce
Clarifying Information
OpenEdge deployment environments using 32-bit and 64-bit OpenEdge.
Error Message
Defect/Enhancement Number
Cause
Resolution
OpenEdge 11.x

Starting in OpenEdge 11.0, r-code is portable across all platforms, regardless of OS platform, Bit Architecture, Little Endian or Big Endian byte ordering, provided that the application code:
  • is written for the same user interface: character mode (CHUI) versus graphical mode (GUI), and
  • does not contain references to Operating System specific commands (eg: OS-COMMAND) that are not available on the target platform.
Changes were made to r-code structures to resolve the previous OpenEdge 10.1x r-code incompatibility between 32-bit and 64-bit platforms, eliminate obsolete data structures, pad structures for future growth, and introduce structures to support new capabilities as follows:
  • r-code portability between 64-bit platforms and 32-bit platforms.
  • r-code supports 1 MAIN Action Code segment and 1 E-code segment.
  • Procedure libraries are able to be larger than 4 GB.
  • The frame segment limit was increased to 4MB.
  • The -noint64 startup option no longer prevents reference to int64 variables, fields or expressions, but it will still change the data type of long integer constants to be DECIMAL as opposed to INT64.
  • The -dataset100 startup option is obsolete.
OpenEdge 10.1A, 10.1B, 10.1C, 10.2A and 10.2B

Progress first introduced 64-bit r-code in OpenEdge 10.1A, where the r-code is native 64-bit boundary aligned where previously it was not. This 64-bit r-code implementation means changes to r-code portability until OpenEdge 11.x Therefore, when using a 64-bit OS platform, while either the 32-bit or 64-bit OpenEdge version can be installed, only 32-bit r-code can run with a 32-bit installed OpenEdge version, or 64-bit r-code with a 64-bit installed OpenEdge version can be run. 

In other words, in OpenEdge 10.1A, 10.1B, 10.1C, 10.2A and 10.2B, a 64-bit ABL client cannot run 32-bit r-code and vice-versa. 64-bit r-code performs better on a 64-bit platform than 32-bit r-code on a 64 bit Operating System platform, so the decision is between r-code portability or maximum performance when opting for either a 64-bit or 32-bit deployment.

While only 32-bit r-code can be run on a 32-bit platform, there is no r-code portability between pre-10.1A 64-bit products and 10.1A 64-bit products; the pre-10.1A 64-bit r-code was not really "native".

The following table shows where r-code generated in specific version must be or must not be recompiled in OpenEdge 10.1A, 10.1B, 10.1C, 10.2A and 10.2B environments.

R-Code Compatibility Rules Table

R-Code Compatibility Rules Table

Therefore, the r-code compatibility rules are:

r-code compiled in 10.0A & 10.0B 32-bit works with 10.1A/B/C 32-bit
r-code compiled in 10.0A & 10.0B 32-bit does not work with 10.1A/B/C 64-bit
r-code compiled in 10.0A & 10.0B 64-bit works with 10.1A/B/C 32-bit
r-code compiled in 10.0A & 10.0B 64-bit does not work with 10.1A/B/C 64-bit
r-code compiled in 10.1A/B/C 32-bit works with 10.0A & 10.0B 32-bit
r-code compiled in 10.1A/B/C 32-bit works with 10.0A & 10.0B 64-bit
r-code compiled in 10.1A/B/C 64-bit does not work with 10.0A & 10.0B 32-bit
r-code compiled in 10.1A/B/C 64-bit does not work with 10.0A & 10.0B 64-bit

10.1B, 10.1C and 10.2A cannot execute r-code generated with version 9, 8 or earlier.
10.2B 32-bit platforms can execute r-code generated with 10.x
10.2B 64-bit platforms can execute r-code generated with 10.1x, but cannot execute 10.0x, version 9, version 8 or earlier r-code.
10.1x may be able to execute r-code generated with 10.2B, but the recommendation is to recompile.
The 64-bit r-code file size will be larger than the 32-bit r-code. The estimated r-code file size growth is between 15 - 35%.

OpenEdge 10.2B,10.2A, 10.1C and 10.1B application code that contains certain functions must be compiled using the -noint64 parameter in order to run on a 10.1A, 10.0B and 10.0A environments.  For further information on the -noint64 parameter refer to Article P133958, How does the -noint64 client session startup parameter work?   
Workaround
Notes
Attachment 
Last Modified Date12/10/2015 7:52 PM


Feedback
 
Did this article resolve your question/issue?

   

Your feedback is appreciated.

Please tell us how we can make this article more useful. Please provide us a way to contact you, should we need clarification on the feedback provided or if you need further assistance.

Characters Remaining: 1025