1. Declaring variables as close (in terms of scope as well as lines of code) to where they're going to be used is excellent practice. The compiler may just end up declaring them all at the top in the code, but it means that us humans dealing with the variables only have to visually eyeball the code from the declaration point onwards.
2. Lotuscript scope works just fine. This is a bug - in that the compiler has 'optimised' this by pulling the declaration out of the loop (and therefore the scope) and so the variable is only initialised once, instead of on each loop as we'd expect.
So yes. variables DIMmed inside loops need explicit initial values.
Its not good, but its well known. Sorry it's bitten you in the backside.
3. Lotuscript - the language - has not been updated since v4.6 (they started returning a variant from 'execute' instead of a single line string).
The domino back end objects have all been incremented on each release. For instance, now, in v9, we actually have a fully-functional calendar API. At last.
4. Lotuscript is old
Yes, very old. Still supported, still a partially compiled P-code language, and still platform independent. So if you have a notes environment, then you can still get it to do significant things.
Yes, the XPages guys like to call it 'Legacy' but because its underpinning all these apps that keep our Domino installations running, it still has enormous value.