Kbase P8996: How to use the attributes and methods of error-status system handle
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/10/2008 |
|
Status: Verified
GOAL:
How to use the attributes and methods of error-status system handle
FIX:
DEFINE VARIABLE txt AS CHARACTER NO-UNDO FORMAT "X(20)".
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE BUTTON b_int LABEL "Integer".
DEFINE BUTTON b_date LABEL "Date".
DEFINE BUTTON b_dec LABEL "Decimal".
DEFINE BUTTON b_log LABEL "Logical".
DEFINE BUTTON b_quit LABEL "Quit" AUTO-ENDKEY.
DEFINE FRAME butt-frame
b_int b_date b_dec b_log b_quit
WITH CENTERED ROW SCREEN-LINES - 2.
DEFINE FRAME get-info
txt LABEL "Enter Data To Convert"
WITH ROW 2 CENTERED SIDE-LABELS TITLE "Data Conversion - Error Check".
ON CHOOSE OF b_int, b_date, b_dec, b_log IN FRAME butt-frame
DO:
IF txt:MODIFIED IN FRAME get-info THEN
DO:
ASSIGN txt.
RUN convert IN THIS-PROCEDURE (txt).
IF ERROR-STATUS:ERROR AND ERROR-STATUS:NUM-MESSAGES GT 0 THEN
DO:
MESSAGE ERROR-STATUS:NUM-MESSAGES
" errors occurred during conversion." SKIP
"Do you want to view them?"
VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO UPDATE view-errs AS LOGICAL.
IF view-errs THEN
DO i = 1 TO ERROR-STATUS:NUM-MESSAGES:
MESSAGE ERROR-STATUS:GET-NUMBER(i) SKIP
ERROR-STATUS:GET-MESSAGE(i) VIEW-AS ALERT-BOX.
END.
END.
END.
ELSE
MESSAGE "Enter data to be converted, then choose type of conversion to perform"
VIEW-AS ALERT-BOX MESSAGE BUTTONS OK.
END.
ENABLE ALL WITH FRAME butt-frame.
ENABLE txt WITH FRAME get-info.
WAIT-FOR CHOOSE OF b_quit IN FRAME butt-frame FOCUS txt IN FRAME get-info.
PROCEDURE convert:
DEFINE INPUT PARAMETER x AS CHARACTER NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE d AS DECIMAL NO-UNDO.
DEFINE VARIABLE dd AS DATE NO-UNDO.
DEFINE VARIABLE l AS LOGICAL NO-UNDO.
CASE SELF:LABEL:
WHEN "Integer" THEN
DO:
ASSIGN i = INTEGER(x) NO-ERROR.
MESSAGE "Converted value: " i VIEW-AS ALERT-BOX.
END.
WHEN "Date" THEN
DO:
ASSIGN dd = DATE(INTEGER(SUBSTRING(x,1,2)),INTEGER(SUBSTRING(x,4,2)),INTEGER(SUBSTRING(x,7)) ) NO-ERROR.
MESSAGE "Converted value: " dd VIEW-AS ALERT-BOX.
END.
WHEN "Decimal" THEN
DO:
ASSIGN d = DECIMAL(x) NO-ERROR.
MESSAGE "Converted value: " d VIEW-AS ALERT-BOX.
END.
WHEN "Logical" THEN
DO:
ASSIGN l = x = "yes" OR x = "true" NO-ERROR.
MESSAGE "Converted value: " l VIEW-AS ALERT-BOX.
END.
END CASE.
END PROCEDURE.