Yes, you need to jump over the subroutines in order for them not to execute as the PIC starts up - exactly as you would if you literally placed your subroutines at the top of the program. There's really no difference. INCLUDE just puts whatever is in the included file, exactly the way it is in the file, exactly at the spot of the INCLUDE statement.

I usually create a file containing all my subroutines, at the beginning of it I have a GOTO OverSubroutines and at the very end I have a label OverSubroutines:
If I have "local" variables used only internally by the subroutines I usually declare them in the subroutines file instead of in the main program file.

You can definitely have the INCLUDE statment after the END of the main program in which case the subroutines will be place there and you don't need to jump around them. But then, if something in the main program tries to access variables you have declared IN the included file you'll get errors because those variables doesn't exist to as the compiler parses thru the source code again exactly as would be the case if you literlly put your variable declarations at the end of the source file.

/Henrik.