Simple thing ... trying to detect a focerrnum and branch to an error routine. Like a try ... catch.
But the branching is never run. Basically the fex stops completely when it encounters the error.
example below I am passing a bad date "A20140101" and getting the expected error
(FOC36355) INVALID TYPE OF ARGUMENT #1 FOR USER FUNCTION DATECVT
But My test never runs
-IF &FOCERRNUM NE 0 THEN GOTO DATE_ERROR;
So bottom line... how can I tell the fex to keep going when there is an error... I will handle it. I tried SET MESSAGE = OFF.
-SET &MYDATE='A20140101'; -SET &X= DATECVT(&MYDATE, 'I8YYMD', 'YYMD'); -IF &FOCERRNUM NE 0 THEN GOTO DATE_ERROR; -RUN -GOTO ALL_DONE; -DATE_ERROR; -TYPE BAD DATE -ALL_DONE -TYPE ALL DONE DATE IS &XThis message has been edited. Last edited by: <Kathryn Henning>,
Please try the following:
-* File aa.fex -SET &ECHO=ALL; -SET &MYDATE='A20140101'; -SET &ERR = CHKFMT(8, &MYDATE , '99999999', 'I3'); -IF &ERR EQ 1 THEN GOTO DATE_ERROR; -SET &X= DATECVT(&MYDATE, 'I8YYMD', 'YYMD'); -EXIT -RUN -DATE_ERROR -TYPE DATE IS INVALID -EXIT
Keep in mind that some errors will stop processing of the code immediately.
This is one of them, this typically happens at a dialog manager level, and from my perspective, its usually at a function call.
Thanks guys. Yes that is what I am trying to catch. Nothing should totally stop processing like that. No matter what the error is in a function call, I expect to be able to catch it and continue. I opened a case...
If you get an answer, please post it back.
I think we would all like to know.
Dialogue Manager does have this habit of stopping processing on an error. However, if this calculation were to be in a DEFINE or COMPUTE, it is expected that an error would be trapped. So how about:
-SET &MYDATE='A20140101'; DEFINE FUNCTION CHECK (INPUT/A10) CHECK/YYMD = DATECVT(INPUT, 'A8YYMD', 'YYMD'); END -RUN -SET &X= CHECK(&MYDATE); -IF &X EQ 0 THEN GOTO DATE_ERROR; -GOTO ALL_DONE; -DATE_ERROR; -TYPE BAD DATE -EXIT -ALL_DONE -TYPE ALL DONE DATE IS &X -EXIT
Wow fantastic solution. I never knew you could call a user defined func from DM like that.
|Powered by Social Strata|