Consultor Eletrônico



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.