Consultor Eletrônico



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.