Navigation: Language Reference > App C - PROP: Runtime Properties > Complete Property List >====== PROP:AssertHook2 ====== | |
A property of the SYSTEM built-in variable that sets the override procedure for the ASSERT internal Clarion procedure. Equivalent to {PROP:LibHook,13}. Assign the ADDRESS of the overriding procedure, and the runtime library will call the overriding procedure instead of the ASSERT procedure. Assign zero and the runtime library will once again call its internal procedure. The overriding procedure's prototype must be exactly the same as the ASSERT procedure (UNSIGNED LineNumber, STRING filename, STRING message). (WRITE-ONLY)
See Also: ASSERT
Example:
PROGRAM
MAP
AssertMy1 PROCEDURE(STRING filename,UNSIGNED LineNumber)
AssertMy2 PROCEDURE(UNSIGNED LineNumber, STRING filename, STRING message)
END
PRAGMA('define(zero_divide ⇒ on'))
CODE
SYSTEM{prop:asserthook} = ADDRESS(AssertMy1)
SYSTEM{prop:asserthook2} = ADDRESS(AssertMy2)
assert(0)
assert(0,'i am a message')
AssertMy1 PROCEDURE(STRING filename,UNSIGNED LineNumber)
CODE
AssertMy2(LineNumber, FileName,'')
AssertMy2 PROCEDURE(UNSIGNED LineNumber, STRING filename, STRING message)
l long
CODE
SYSTEM{prop:asserthook} = 0 !Stop recursive calls into assert handler
SYSTEM{prop:asserthook2} = 0 !Stop recursive calls into assert handler
IF MESSAGE('Assert 1|filename=' & CLIP(filename) & '|line=' & LineNumber & |
'|Message=' & CLIP(message) & '|Do you want me to GPF?',|
'ASSERT', ICON:Exclamation, BUTTON:Yes + BUTTON:No)
l = l / l ! Causes a divide by zero GPF
END