The INT64 data type was introduced in
OpenEdge 10.1B. This required changes in the r-code format. Earlier OpenEdge 10 releases do not support this datatype and would not be able to run the updated r-code format. However, as policy we do allow r-code compatibility within a major release cycle,
provided the code does not use new features that aren't present yet in the version deployed to.
To maintain this r-code compatibility the
No INT64 (-noint64) client session startup parameter was introduced, in order to allow OpenEdge 10.1B and higher to generate r-code that can be deployed to earlier clients (OpenEdge 10.0x to 10.1A).
When the client session
-noint64 startup parameter is used to compile code, the following occurs:
- Functions that are compiled as INT64 in OpenEdge 10.1B (CURRENT-VALUE, DYNAMIC-CURRENT-VALUE, DYNAMIC-NEXT-VALUE, ETIME, GET-POINTER-VALUE, GET-SIZE, INTERVAL, NEXT-VALUE, and SEEK) are compiled as INTEGER.
- All INT64-size constant values are compiled as DECIMAL..
- ABL source code references to INT64 variables and fields generate errors.
- Code that subtracts two DATETIME values generates a compile-time error.
- The XML schema long data type (64-bit signed integer) maps to the ABL DECIMAL data type rather than the INT64 data type. This mapping applies to:
- The bprowsdldoc and bproxsdto4gl command line utilities.
- The Web services Client run-time product
Using the
-noint64 startup parameter does not guarantee that r-code will run in earlier OpenEdge 10 releases. For the code to run on earlier releases, it must not use new features introduced in later releases.
For Example:
- Code using the READ-JSON() method introduced in 10.2B can never run in 10.1A. This restriction has always been there, the -noint64 parameter does not affect this.
- If application code that was developed in OpenEdge 10.1A and earlier are recompiled without any changes in Release 10.1B and later with the -noint64 startup parameter, these procedures will still run in earlier versions.
The
-noint64 startup parameter does not affect performance. The arithmetic operations in Release 10.1A and earlier code are calculated using the INTEGER data type. In Release 10.1B and higher parameter the space and time taken up by int64 calculations is the same as for integer calculations.
Starting with OpenEdge 11.0, the
-noint64 client session startup parameter will no longer prevent references to int64 variables, fields or expressions, but it still will change the data type of long integer constants to be DECIMAL as opposed to INT64.