Consultor Eletrônico



Kbase P48594: OE10: Progress version comparison in the ADM's attribut.i include file gives the wrong result.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   4/13/2007
Status: Verified

FACT(s) (Environment):

OpenEdge and ADM1 Problem With Versioning
OpenEdge 10.0A

SYMPTOM(s):

Running ADM1 code with Progress OpenEdge.

Entry 2 outside the range of list adm/objects/broker.p.

Using customized ADM1

CAUSE:

Bug# OE00096218

CAUSE:

The Progress version comparison in attribut.i compares characters:

&IF PROVERSION GE "8.1":U &THEN

So, the character "1" in the value ("10.0A1B") returned by the PROVERSION function for OpenEdge will never be greater than the character "8" in the literal string "8.1", which incorrectly sets the value of the &ADM-DATA preprocessor to be PRIVATE-DATA.

FIX:

The ADM1 source code as shipped with OpenEdge 10 contain the fix for this issue. However, if a customized ADM1 is used this may need to be applied in the customized code.

The changes involved are:

In adm/attribute.i :

Replace the code

&IF PROVERSION GE "8.1":U &THEN
&GLOB adm-data ADM-DATA
&GLOB unless-hidden UNLESS-HIDDEN
&ELSE
&GLOB adm-data PRIVATE-DATA
&GLOB unless-hidden
&ENDIF

with

&SCOPED-DEFINE MinVersion "8.1 "
&IF INTEGER(SUBSTRING(PROVERSION,1,INDEX(PROVERSION,".":U) - 1)) >~
INTEGER(SUBSTRING({&MinVersion},1,INDEX({&MinVersion},".":U) - 1))~
OR~
(INTEGER(SUBSTRING(PROVERSION,1,INDEX(PROVERSION,".":U) - 1)) =~
INTEGER(SUBSTRING({&MinVersion},1,INDEX({&MinVersion},".":U) - 1))~
AND~
(INTEGER(SUBSTRING(PROVERSION,INDEX(PROVERSION,".":U) + 1,1)) >~
INTEGER(SUBSTRING({&MinVersion},INDEX({&MinVersion},".":U) + 1,1))~
OR~
(INTEGER(SUBSTRING(PROVERSION,INDEX(PROVERSION,".":U) + 1,1)) =~
INTEGER(SUBSTRING({&MinVersion},INDEX({&MinVersion},".":U) + 1,1))~
AND~
SUBSTRING(PROVERSION,INDEX(PROVERSION,".":U) + 1,2) >=~
SUBSTRING({&MinVersion},INDEX({&MinVersion},".":U) + 1,2))))
&THEN
&GLOB adm-data ADM-DATA
&GLOB unless-hidden UNLESS-HIDDEN
&ELSE
&GLOB adm-data PRIVATE-DATA
&GLOB unless-hidden
&ENDIF
&UNDEFINE MinVersion

In adm/tableio.i :

replace the code

&IF DEFINED(adm-browser) NE 0 AND PROVERSION >= "9":U &THEN
IF adm-create-on-add THEN
BROWSE {&BROWSE-NAME}:CREATE-ON-ADD = yes.
&ENDIF

with
&IF DEFINED(adm-browser) NE 0 AND INTEGER(SUBSTRING(PROVERSION,1,INDEX(PROVERSION,".":U) - 1)) >= 9 &THEN
IF adm-create-on-add THEN
BROWSE {&BROWSE-NAME}:CREATE-ON-ADD = yes.
&ENDIF