Yes - having an algorithm determine what I intended with my indents and parentheses would be challenging. As I suspected, the problem was not with a missing EndDo - the compiler error message - it was caused by a missing endif.
One solution is for me to become more familiar with using the Modules, so I can move units of working code out of the "production" path.
I recall one compiler package that used different colored vertical trace lines for the If/endif, or do/enddo (and other pairs). SimplyFortran has vertical tab lines but not trace lines - like the vertical tab lines, but tied to any if/endif pair.
If those lines were there, I could easily trace any IF to its EndIF mate. If there was a missing Endif, one of those IF lines would down all the way to bottom of the program.
If a parentheses was missing between an If and an EndIF (or a Do and EndDo), perhaps that If/EndIF could be given a different color.
As I recall, the user was not bothered with picking/specifying the trace line color scheme or choice - it didn't matter. Its only job was to indicate, "... this starts here and ends there."
The simplicity - no, I'm not volunteering to add it to the compiler
- is that there is no dependency on understanding the program logic. Each IF gets a trace, each Do gets a trace, etc. The innermost IF pairs with the first EndIF it encounters.
Just a thought. Thank you for the consideration.