Hey, we're in a similar boat. I've been working on a project for 2 months now. Currently, its a little over 10,000 lines of code, and right, programs of this magnitude are always a challenge to pick through the old code when you want to make modifications or additions. I try to watch what I name things, so I can pick needles out of the hay stack faster. I also like to use lots of GOSUB routines, and in this way...
SUB Pete
GOSUB load_data
GOSUB sort_data
GOSUB find_duplicates
GOSUB remove_duplicates
END SUB
In other words, it paints the big picture, with the need for me scrolling on endlessly through the subs, to see what comes next. Now if I need to look closely at the code, the good news is I line up all those local subroutines in the order they are called. So when I start with the first routine and read, the only difference is somewhere I encounter the RETURN statement and the next local sub-routine label.
I used to only use GOSUB statements when that particular routine was called two or more times in the local sub or main. Now, I use it more as a map. I blame that on...ah, on... oh, on old age.
Pete
Note: Steve would never post an example with his name as a sub-routine. He considers himself the main.