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.
thx
Jodye
-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 &X
This message has been edited. Last edited by: <Kathryn Henning>,
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.
Waz...
Prod:
WebFOCUS 7.6.10/8.1.04
Upgrade:
WebFOCUS 8.2.07
OS:
Linux
Outputs:
HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!
July 08, 2014, 12:54 PM
jodye
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...
WF 8.0.0.5M
July 08, 2014, 05:52 PM
Waz
If you get an answer, please post it back.
I think we would all like to know.
Waz...
Prod:
WebFOCUS 7.6.10/8.1.04
Upgrade:
WebFOCUS 8.2.07
OS:
Linux
Outputs:
HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!
July 09, 2014, 07:25 AM
Alan B
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
Alan. WF 7.705/8.007
July 11, 2014, 01:51 PM
jodye
Hi Alan!
Wow fantastic solution. I never knew you could call a user defined func from DM like that.