Kbase P117784: Compiling 4GL fails on 64-bit OS with "RAW data can be extracted only from database fields. (1839)"
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  16/10/2008 |
|
Status: Unverified
FACT(s) (Environment):
HP-UX 11.0 64-bit
Solaris SPARC 2.8 64-bit
Solaris SPARC 8 64-bit
Solaris SPARC 9 64-bit
Solaris SPARC 10 64-bit
IBM AIX POWER 5.1 64-bit
IBM AIX POWER 5.2 64-bit
IBM AIX POWER 5.3 64-bit
Progress 9.1E
Progress 9.1E 64-bit
OpenEdge 10.0x
OpenEdge 10.1A
SYMPTOM(s):
Compiling 9.1E on SOLARIS fails with "RAW data can be extracted only from database fields. (1839)" but compiles and runs fine in 9.1D
Using RAW(<buffer-field>:BUFFER-VALUE) construct
Compiling fails on 64-bit OS
RAW data can be extracted only from database fields. (1839)
CHANGE:
Upgrading to 64-bit OS, and the code that compiled fine on 9.1D and earlier is recompiled with newer Progress version on the new OS.
CAUSE:
Bug# OE00100899
CAUSE:
The compiler error is in fact expected.
As explained in the OpenEdge Development: ABL Reference, RAW function takes a non-progress database field as their first parameter, therefore the first parameter cannot be a program variable.
Since the nature of the BUFFER-VALUE attribute can not be determined until runtime, the compiler will treat this as a variable which in this case means the error should occur.
FIX:
Upgrade to OpenEdge 10.1B or later.
From that release onward, the compiler will always raise the error.
To convert a database field to it's raw data representation, use the PUT-BYTE,PUT-STRING and related functions instead.