Kbase P188498: 4GL/ABL: Called procedure erroneously returns an error to the caller
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  5/27/2011 |
|
Status: Unverified
SYMPTOM(s):
4GL/ABL: Called procedure erroneously returns an error to the caller
Called procedure fails to set the output parameter returned to the caller.
When a FOR FIRST statement in the Called procedure fails to find a record in an empty TEMP-TABLE, the Called procedure erroneously returns an error to the Caller and fails to properly set the output parameter returned to the Caller.
When a FOR FIRST statement in the Called procedure fails to find a record in a non-empty database table, the Called procedure erroneously returns an error to the Caller and fails to properly set the output parameter returned to the Caller.
FACT(s) (Environment):
When a FOR FIRST statement in the Called procedure fails to find a record in an non-empty TEMP-TABLE the Called procedure does not return an error to the Caller and properly sets the output parameter returned to the Caller.
All Supported Operating Systems
OpenEdge 10.2A
OpenEdge 10.2B04
CAUSE:
Bug# OE00207983
FIX:
Non at this time. A workaround is to reset the erroneous error condition raised by the Called procedure by executing a RUN statement of a dummy internal procedure after the Main block of the offending Called procedure. For example:
DEFINE OUTPUT PARAMETER myVar AS CHAR NO-UNDO.
$MAIN-BLK$:
DO ON ERROR UNDO, LEAVE:
FOR FIRST Customer WHERE
Customer.Comments CONTAINS "NM@" + "jay)Martin"
NO-LOCK ON ERROR UNDO, THROW:
END.
CATCH oneError AS Progress.Lang.SysError:
DELETE OBJECT oneError.
myVar = "myVar set to error".
UNDO, LEAVE.
END CATCH.
END.
RUN DummyProc.
PROCEDURE DummyProc:
END PROCEDURE.