1) The ON handlers only affect the current batch file level -- a CALL'd batch file is a nested file, so the ON handlers aren't referenced, and there's nothing to restore.
The last sentence of
HELP ->
ON, subsection
Scope:
"When control returns to the calling batch file, its
break and
error handlers that had been in effect at the
CALL are reactivated."
I think this statement in the documentation is a leftover from the days when
ON BREAK and
ON ERROR were the only forms of
ON, and should be amended to:
"When control returns to the calling batch file,
all of its ONhandlers that had been in effect at the
CALL are reactivated."
where underscore indicates modified text. This would be consonant with interpreting your above quoted statement to mean that the CALL'd batch file does not affect the caller's ON handlers.
2) It's not affected at all; calling a label is done within the same batch file. But the question is probably moot, since that syntax is for batch files written for CMD.EXE, which doesn't support ON handlers anyway.
While I agree with the original purpose of in-file CALL, CALL offers more flexibility than GOSUB for passing parameters, and for modifying passed parameters, so I would not be surprised if TCC-only users would take advantage of this feature. Regardless, your answer to my question was as expected - if control moves out of the file, ON does not propagate, but inside it does.