Also if you are using BRAKE and RESUME in an interrupt function, the interrupt function has to be called from a subprogram and not from the main program where the interrupt was declared.
P1 declared interrupt P3 (LOCAL)
P1 called P2
Interrupt is switched on in P2
Interrupts calls P3
BRAKE and RESUME in P3
PP returns to P1
P1 declared interrupt P3 (LOCAL)
P1 called P2
Interrupt is switched on in P2
Interrupts calls P3
BRAKE and NO RESUME in P3
PP returns to P2
P1 declared interrupt P3 (GLOBAL)
P1 called P2
Interrupt is switched on in P2
Interrupts calls P3
BRAKE and RESUME in P3 : ERROR
P1 declared interrupt P3 (LOCAL)
Switches on P3
Interrupts calls P3
BRAKE or RESUME: ERROR
P1 declared interrupt P3 (LOCAL)
Switches on P3
Interrupts calls P3
No BRAKE or RESUME causes no error
PP returns to P1
And the reason for making sure the the ARP (advance run pointer) is not leaving the sub that may be aborted by RESUME is to make sure that when the RESUME statement is activated, the advance run pointer must not be at the level where the interrupt was declared, but at least one level lower.