do on stop undo, retry:
if retry
then do:
log-manager:write-message ("STOP condition encountered", "OtherERROR").
undo, leave.
end.
do on error undo, leave:
session:error-stack-trace = true.
log-manager:logfile-name = chPrimaryLog.
log-manager:clear-log ().
/* Control log detail and event types */
log-manager:logging-level = 3.
/* Uncomment for detailed trace during debugging */
/* log-manager:log-entry-types = "DynObjects.Class,4GLTrace". */
log-manager:write-message ("Start ABL2DB").
/* ************************ Begin Actual Work ********************* */
...
/* ************************ End Actual Work ********************* */
catch eobAppError as Progress.Lang.AppError:
log-manager:write-message ( eobAppError:ReturnValue ).
delete object eobAppError.
end catch.
catch eobSysError as Progress.Lang.SysError :
log-manager:write-message(substitute("Unexpected Exception: &1", eobSysError:getMessage(1)), "SysERROR").
if eobSysError:NumMessages > 1
then do inWhich = 2 to eobSysError:NumMessages:
log-manager:write-message(substitute("Unexpected Exception (cont.): &1", eobSysError:getMessage(inWhich)), "SysERROR").
end.
do inWhich = 1 to num-entries(eobSysError:CallStack,"~n"):
log-manager:write-message(entry(inWhich,eobSysError:CallStack,"~n"),"CALLSTACK").
end.
delete object eobSysError no-error.
end catch.
catch eobOtherError as Progress.Lang.Error :
log-manager:write-message(substitute("Other error: &2", eobOtherError:getMessage(1))).
if eobOtherError:NumMessages > 1
then do inWhich = 2 to eobOtherError:NumMessages:
log-manager:write-message(substitute("Unexpected Exception (cont.): &1", eobOtherError:getMessage(inWhich)), "OtherERROR").
end.
do inWhich = 1 to num-entries(eobOtherError:CallStack,"~n"):
log-manager:write-message(entry(inWhich,eobOtherError:CallStack,"~n"),"CALLSTACK").
end.
delete object eobOtherError no-error.
end catch.
finally:
log-manager:write-message ("End ABL2DB").
end finally.
end. /* do */
end.